Ejecutar un script de Python al pulsar un botón en Tkinter

Kamy_0117 Mensajes publicados 2 Estado Miembro -  
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   -

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

  1. 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?

    0
  2. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 944
     

    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

    0
    1. Nanosaure Mensajes publicados 2 Estado Miembro
       

      mamíemando hola, 

      Solo una precisión: si, en la primera versión, ./my_script.py debe tener argumentos: ¿cómo los añadimos? Lo mejor sería además de tener campos para rellenar que se añadan automáticamente... Pero avanzaré por etapas.. 

      0
      1. Nanosaure Mensajes publicados 2 Estado Miembro > Nanosaure Mensajes publicados 2 Estado Miembro
         

        ¡Ya está! He entendido: entre corchetes, entre comillas, y comas entre cada argumento...

        0
  3. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 944
     
    Buenos días,
    0