Exécution de la commande Button lors de la création
Dans Tkinter, lorsqu'une instance Button est initialisée avec un paramètre de commande, la fonction associée est destinée à être exécuté lorsque le bouton est cliqué. Cependant, dans certains cas, la commande peut être exécutée immédiatement après la création du bouton, contrairement au comportement attendu.
Analyse de l'exemple de code
Considérez le code suivant :
from Tkinter import * admin = Tk() def button(an): print(an) print('het') b = Button(admin, text='as', command=button('hey')) b.pack() mainloop()
Description du problème
Lorsque vous exécutez ce code, le bouton ne semble pas fonctionner correctement. Au lieu d'exécuter la fonction du bouton après avoir cliqué, il affiche « hey » et « het » immédiatement après la création.
Explication
Le problème réside dans la façon dont la commande Le paramètre est en cours d’initialisation. La ligne :
command=button('hey')
transmet le résultat de l'appel de la fonction bouton('hey') au paramètre de commande. Cela équivaut à :
result = button('hey') command=result
Puisque la fonction bouton('hey') est exécutée immédiatement et renvoie le résultat, la commande est définie sur le résultat au lieu de la référence de fonction elle-même. Par conséquent, la fonction est exécutée immédiatement, plutôt que lorsque le bouton est cliqué.
Solution
Pour résoudre ce problème, vous devez transmettre une référence au bouton fonction sans l’exécuter. Pour ce faire, omettez simplement les parenthèses lors de l'initialisation du paramètre de commande :
command=button
Notes supplémentaires
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!