Cómo pasar argumentos al comando del botón Tkinter
-
Pasar los argumentos a
command
en el botón Tkinter conparciales
-
Pasa los argumentos a
command
en Tkinter Button con la funciónlambda
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)
)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook