Comment transmettre des arguments à la commande du bouton Tkinter
-
Passer les arguments à la commande dans Tkinter Button avec des
partial
-
Passez les arguments à
command
dans Tkinter Button avec la fonctionlambda
L’option command
dans le widget Tkinter Button
est déclenchée lorsque l’utilisateur appuie sur le bouton. Dans certains scénarios, vous devez passer des arguments à la fonction de commande attachée, mais vous ne pouvez pas simplement passer les arguments comme ci-dessous,
button = tk.Button(app, text="Press Me", command=action(args))
Nous allons présenter deux façons de transmettre les arguments à la fonction de commande.
Passer les arguments à la commande dans Tkinter Button avec des partial
Comme démontré dans Python Tkinter tutorial, vous avez la possibilité d’utiliser l’objet partial
du module 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)
retourne un objet appelable qui se comporte comme un func
quand il est appelé.
Passez les arguments à command
dans Tkinter Button avec la fonction lambda
Vous pouvez aussi utiliser l’opérateur ou la fonction Python lambda
pour créer une fonction simple temporaire et unique qui sera appelée quand on cliquera sur le Bouton
.
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
Vous n’avez pas besoin d’arguments dans cet exemple, par conséquent, vous pourriez laisser la liste d’arguments vide et n’écrire que l’expression.
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