Déclenchement inattendu de boutons dans Tkinter : comprendre les références de fonctions
Dans Tkinter, lors de la création d'un bouton, vous pouvez spécifier une commande qui sera exécutée lorsque le bouton est cliqué. Cependant, dans votre exemple de code, la commande fournie est exécutée immédiatement lorsque le bouton est créé.
Pour comprendre pourquoi cela se produit, considérez l'extrait suivant :
b = Button(admin, text='as', command=button('hey'))
Ce code est équivalent à :
result = button('hey') b = Button(admin, text='as', command=result)
Lorsque vous appelez bouton('hey') à l'intérieur du paramètre de commande, vous appelez la fonction et l'exécutez immédiatement. En conséquence, le code print('hey') et print('het') sont imprimés avant que le bouton ne soit réellement cliqué.
Pour résoudre ce problème, vous devez passer une référence à la fonction, sans l'exécuter. Pour ce faire, omettez simplement les parenthèses :
b = Button(admin, text='as', command=button)
Cela transmettra une référence à la fonction du bouton, et elle sera exécutée lorsque le bouton sera cliqué, pas lors de sa création.
Alternativement, vous pouvez utiliser les fonctions lambda pour créer une fonction anonyme qui appelle la fonction d'origine avec l'argument souhaité :
b = Button(admin, text='as', command=lambda: button('hey'))
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!