Maison >développement back-end >Tutoriel Python >Pourquoi la commande de mon bouton s'exécute-t-elle immédiatement au lieu d'un clic ?

Pourquoi la commande de mon bouton s'exécute-t-elle immédiatement au lieu d'un clic ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 12:09:11154parcourir

Why Does My Button's Command Execute Immediately Instead of on Click?

Pourquoi la commande de mon bouton s'exécute-t-elle immédiatement après la création ?

Question :

Dans le code fourni, un bouton est créé et son option de commande est définie sur un appel de fonction avec un argument. Cependant, le bouton imprime l'argument et une autre chaîne immédiatement après sa création et ne répond pas aux clics. Pourquoi cela se produit-il ?

Réponse :

Le code fourni transmet le résultat du bouton d'appel de fonction('hey') directement à l'option de commande. Cela provoque l'exécution immédiate de la fonction, plutôt que lorsque vous cliquez sur le bouton.

Pour résoudre ce problème, la bonne façon de transmettre une fonction en tant que commande est d'utiliser son nom sans parenthèses ni arguments. Par exemple :

b = Button(admin, text='as', command=button)

Cependant, pour passer un argument à une fonction, vous pouvez utiliser une fonction lambda, qui est une fonction anonyme qui renvoie une référence à elle-même :

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!

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