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>
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>
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>
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!