Maison > développement back-end > Tutoriel Python > Comment éviter les problèmes de portée variable lors de l'attribution de commandes de boutons Tkinter dans une boucle ?

Comment éviter les problèmes de portée variable lors de l'attribution de commandes de boutons Tkinter dans une boucle ?

Susan Sarandon
Libérer: 2024-12-18 20:34:18
original
364 Les gens l'ont consulté

How to Avoid Variable Scope Issues When Assigning Tkinter Button Commands in a Loop?

Affectation de commandes de boutons Tkinter dans une boucle For à l'aide de Lambda

Dans Tkinter, une tâche courante consiste à créer une série de boutons à l'aide d'un for boucle. Cependant, lors de l'attribution de commandes à ces boutons avec une fonction lambda, un piège survient.

Le problème se produit lors de l'utilisation d'un nom de variable dans la fonction lambda qui est également utilisé dans l'itérateur de boucle for. Cette variable est constamment réaffectée au fur et à mesure de la progression de la boucle, ce qui conduit tous les boutons à utiliser la même valeur pour la variable attribuée.

Pour résoudre ce problème, modifiez l'expression lambda en introduisant un argument de mot-clé par défaut. Ceci lie la valeur actuelle de la variable à l'argument mot-clé du lambda à chaque fois dans la boucle :

user_button = Tkinter.Button(self.root, text=name,
                             command=lambda name=name: self.a(name))
Copier après la connexion

En attribuant le nom de la variable à l'argument mot-clé name, la valeur actuelle est liée à l'argument à chaque itération. Cela garantit que chaque bouton conserve son paramètre unique lorsqu'il est 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.cn
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