Maison > développement back-end > Tutoriel Python > Pourquoi mon bouton Tkinter exécute-t-il sa commande immédiatement après sa création ?

Pourquoi mon bouton Tkinter exécute-t-il sa commande immédiatement après sa création ?

Susan Sarandon
Libérer: 2024-12-21 03:36:16
original
278 Les gens l'ont consulté

Why Does My Tkinter Button Execute Its Command Immediately Upon Creation?

Exécution de la commande Button lors de la création

Dans le code fourni, un widget Button est créé avec son option de commande définie sur le résultat de l'appel d'un fonction avec un argument, entraînant une exécution immédiate de la commande. Pour résoudre ce problème, il est crucial de comprendre comment fonctionne la gestion des événements dans Tkinter.

Dans Tkinter, la gestion des événements fonctionne en associant une fonction à un événement (par exemple, un clic sur un bouton). Lorsque l'événement se produit, Tkinter appelle la fonction associée. Cependant, dans le code fourni, l'option de commande contient le résultat de l'appel du bouton de fonction (« hey ») plutôt qu'une référence à la fonction elle-même.

Par conséquent, le code fait essentiellement la même chose que :

result = button('hey')
b = Button(admin, text='as', command=result)
Copier après la connexion

Par conséquent, la commande est exécutée immédiatement lors de la création du bouton, en imprimant 'hey' et 'het', et lorsque l'on clique sur le bouton, rien ne se passe puisque la commande a déjà été exécuté.

Pour remédier à cela, l'option de commande doit contenir une référence à la fonction, et non le résultat de son invocation. Par exemple :

b = Button(admin, text='as', command=button)
Copier après la connexion

Alternativement, si la commande nécessite un argument, on peut utiliser des fonctions lambda, qui permettent des définitions de fonctions en ligne. Par exemple :

b = Button(admin, text='as', command=lambda: button('hey'))
Copier après la connexion

Cela crée une fonction anonyme qui, lorsqu'elle est appelée, invoque le bouton('hey'), fournissant la fonctionnalité souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal