Maison > développement back-end > Tutoriel Python > Pourquoi le bouton « Commande » s'exécute-t-il immédiatement lorsqu'il est déclaré ?

Pourquoi le bouton « Commande » s'exécute-t-il immédiatement lorsqu'il est déclaré ?

Barbara Streisand
Libérer: 2024-10-19 07:59:01
original
509 Les gens l'ont consulté

Why Does the Button

Pourquoi le paramètre Button "command" est-il exécuté lorsqu'il est déclaré ?

En Python, le paramètre "command" du widget Button est responsable de définir une fonction de rappel. Cependant, les utilisateurs peuvent être perplexes lorsque cette fonction de rappel semble être exécutée immédiatement après la déclaration du bouton.

Ce problème survient lorsque le paramètre "command" se voit attribuer une expression d'appel de fonction au lieu d'un objet de fonction. Par exemple :

<code class="python">def Hello():
    print("Hi there!")

Button(frame, text="Hello", command=Hello())  # Function call expression</code>
Copier après la connexion

Dans ce code, l'expression "Hello()" appelle immédiatement la fonction Hello, renvoyant sa valeur de retour. En conséquence, la fonction de rappel est exécutée avant la création du bouton, ce qui entraîne le message « Salut ! » message en cours d'impression sur la console.

Pour éviter ce problème et attribuer l'objet fonction au paramètre "commande", utilisez le nom de la fonction sans parenthèses :

<code class="python">Button(frame, text="Hello", command=Hello)  # Function object</code>
Copier après la connexion

Les objets fonction contiennent des références à leur code, qui sera exécuté lorsque le rappel sera invoqué. De plus, si des arguments doivent être transmis, des expressions lambda peuvent être utilisées :

<code class="python">Button(frame, text="Hello", command=lambda: Goodnight("Moon"))</code>
Copier après la connexion

Dans ce cas, l'expression lambda encapsule l'appel Goodnight("Moon"), retardant son exécution jusqu'à ce que le bouton soit cliqué.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal