Comment transmettre des arguments à la commande du bouton Tkinter

Jinku Hu 30 janvier 2023
  1. Passer les arguments à la commande dans Tkinter Button avec des partial
  2. Passez les arguments à command dans Tkinter Button avec la fonction lambda
Comment transmettre des arguments à la commande du bouton Tkinter

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)
)
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - Tkinter Button