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
Susan Sarandonoriginal
2024-12-21 03:36:16280parcourir

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)

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)

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'))

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:
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