Ejecutar un script de Python al pulsar un botón en Tkinter
Hola,
Estoy trabajando en un proyecto en Python, pero tengo un problema.
Quiero abrir un programa Python (fiher.py) con un botón de Tkinter, pero no encuentro ninguna documentación al respecto. Toda ayuda será maravillosa para mí. Gracias de antemano.
El código:
from tkinter import * window = Tk() window.title("Formulate") window.geometry("1080x720") window.minsize(680, 560) window.config(background='#2AAD57') frame = Frame(window, bg='#2AAD57') label_title = Label(frame, text="Bienvenue", font=("Courrier", 40), bg='#2AAD57', fg="#FFFFFF") label_title.pack(expand=YES) label_subtitle = Label(frame, text="Formulaire de registration", font=("Courrier", 25), bg='#2AAD57', fg="#FFFFFF") label_subtitle.pack(expand=YES) play_button = Button(frame, text="Commencer", font=("Courrier", 25), bg='#FFFFFF', fg="#2AAD57") play_button.pack(pady=25,fill=X) frame.pack(expand=YES) window.mainloop()
3 respuestas
-
yg_be Mensajes publicados 23437 Fecha de registro Estado Colaborador Última intervención Embajador 1 588
hola,
el código que presentas, ¿es el de fiher.py?
-
Esto probablemente te ayudará: https://www.delftstack.com/fr/howto/python/python-run-another-python-script/
-
-
Hola,
Para completar la respuesta de yg_be, los botones en Tkinter tienen un parámetro command que permite llamar a una función pasada como parámetro (callback).
Ejecutar otro script de Python
Si seguimos la idea propuesta por ug_be: basta con que la callback inicie ese otro programa de Python (por ejemplo utilizando subprocess.call).
my_script.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- print("coucou")
El archivo debe tener permisos de ejecución. En Linux:chmod a+x my_script.py
gui.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import subprocess from tkinter import * def my_callback(): subprocess.call("./my_script.py", shell=True) window = Tk() button = Button(window, text="start", command=my_callback) button.pack() window.mainloop()Este archivo debe estar en el mismo directorio que my_script.py.
Ejecutar una función definida en otro módulo de Python
Es una solución más elegante que la anterior. De hecho, se suele preferir que una funcionalidad esté envuelta en una función, lo que facilita su llamada y su reutilización. Así que podríamos modificar el ejemplo anterior de la siguiente forma:
my_lib.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- def my_function(): print("coucou")gui.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from my_lib import my_function from tkinter import * window = Tk() button = Button(window, text="start", command=my_function) button.pack() window.mainloop()
Este archivo debe estar en el mismo directorio que my_lib.py.
Bonne chance
-
Buenos días,