Cómo pasar argumentos al comando del botón Tkinter

  1. Pasar los argumentos a command en el botón Tkinter con parciales
  2. Pasa los argumentos a command en Tkinter Button con la función lambda

La opción command en el widget Tkinter Button se activa cuando el usuario pulsa el botón. En algunos escenarios, necesitas pasar los argumentos a la función de comando adjunta, pero no puedes simplemente pasar los argumentos como se muestra a continuación,

button = tk.Button(app, text="Press Me", command=action(args))

Introduciremos dos formas de pasar los argumentos a la función de comando.

Pasar los argumentos a command en el botón Tkinter con parciales

Como se demuestra en Python Tkinter tutorial, tienes la opción de usar el objeto parcial del módulo functools.

from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
from functools import partial
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))

buttonExample.pack()
labelExample.pack()
app.mainloop()
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))

partial(change_label_numer, 2) devuelve un objeto llamable que se comporta como una func cuando es llamado.

Pasa los argumentos a command en Tkinter Button con la función lambda

También puede usar el operador o función lambda de Python para crear una función temporal y sencilla de una sola vez que se llame cuando se haga clic en Button.

from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=lambda: change_label_number(2))

buttonExample.pack()
labelExample.pack()
app.mainloop()

The syntax of lambda function is

lambda: argument_list: expression

No necesitas ningún argumento en este ejemplo, por lo tanto, puedes dejar la lista de argumentos vacía y sólo escribir la expresión.

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=lambda: change_label_number(2))

Artículo relacionado - Tkinter Button

  • Cómo cerrar una ventana de Tkinter con un botón
  • Cómo cambiar el estado del Botón Tkinter
  • Cómo crear una nueva ventana haciendo clic en un botón de Tkinter
  • Cómo vincular varios comandos al botón Tkinter
  • Cómo cambiar el tamaño del botón Tkinter
  • Cómo actualizar el texto del botón Tkinter
  • Cómo cambiar el color del botón Tkinter
  • comments powered by Disqus