Maison >développement back-end >Tutoriel Python >Pourquoi mon bouton Tkinter exécute-t-il sa commande immédiatement au lieu d'un clic ?
Pourquoi l'exécution immédiate d'une commande de bouton lors de la création ?
Dans Tkinter, l'attribution d'une commande à un bouton peut entraîner un comportement inattendu lorsque la commande s'exécute immédiatement lors de la création du bouton, pas lorsqu'on clique dessus. Cela est dû à la façon dont fonctionne l'option de commande.
Lorsque vous spécifiez un paramètre de commande comme Button(... command=button('hey')), vous transmettez en fait le résultat de l'appel de bouton(' hey') à l'option de commande. Cela signifie que la fonction du bouton est exécutée immédiatement et que la valeur renvoyée est affectée au paramètre de commande.
Solution : Passer une référence à une fonction
Pour éviter cela problème, vous devez transmettre une référence à la fonction au lieu de l'exécuter immédiatement. Cela peut être fait à l'aide des fonctions lambda, functools.partial ou d'une fonction intermédiaire.
Utilisation des fonctions Lambda
Les fonctions Lambda offrent un moyen simple de créer des fonctions anonymes qui peuvent servir de référence. Par exemple :
b = Button(... command=lambda: button('hey'))
Cette fonction lambda crée une fonction sans nom qui, lorsqu'elle est appelée, exécute la fonction bouton avec l'argument « hé ». Cette référence peut ensuite être passée au paramètre de commande du bouton.
Approches alternatives
Conclusion
En passant une référence à un fonction au lieu de l'exécuter immédiatement, vous pouvez vous assurer que la commande du bouton s'exécute uniquement lorsque vous cliquez sur le bouton, comme prévu.
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!