Come passare gli argomenti al comando del pulsante Tkinter
-
Passare gli argomenti al
command
nel pulsante Tkinter conpartials
-
Passare Argomenti a
command
nel pulsante Tkinter con la funzionelambda
L’opzione command
in Tkinter Button
si attiva quando l’utente preme il pulsante. In alcuni scenari, è necessario passare gli argomenti alla funzione di comando allegata, ma non è possibile passare semplicemente gli argomenti come di seguito,
button = tk.Button(app, text="Press Me", command=action(args))
Introdurremo due modi per passare gli argomenti alla funzione di comando.
Passare gli argomenti al command
nel pulsante Tkinter con partials
Come dimostrato in Python Tkinter tutorial, si ha la possibilità di usare l’oggetto partial
dal modulo 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_numer, 2)
restituisce un oggetto richiamabile che si comporta come un func
quando viene chiamato.
Passare Argomenti a command
nel pulsante Tkinter con la funzione lambda
Si può anche usare l’operatore o la funzione Python lambda
per creare una semplice funzione temporanea, una tantum, da chiamare quando si clicca su 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
Non è necessario alcun argomento in questo esempio, quindi si potrebbe lasciare vuota la lista degli argomenti e scrivere solo l’espressione.
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