Maison >développement back-end >Tutoriel Python >Comment éviter les problèmes de capture de variables Lambda lors de la création de plusieurs boutons Tkinter dans une boucle ?

Comment éviter les problèmes de capture de variables Lambda lors de la création de plusieurs boutons Tkinter dans une boucle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 22:11:12303parcourir

How to Avoid Lambda Variable Capture Issues When Creating Multiple Tkinter Buttons in a Loop?

Résolution de l'affectation des commandes de bouton dans une boucle Tkinter for à l'aide de Lambda

Lors de la création de plusieurs boutons dans une boucle for à l'aide de la fonction lambda, l'attribution d'un le paramètre unique de chaque bouton peut être difficile. Par défaut, l'expression lambda fait référence à la variable name, qui est réaffectée à chaque itération de boucle. Cela conduit tous les boutons à hériter de la dernière valeur attribuée.

Pour résoudre ce problème, des paramètres de mots-clés par défaut peuvent être utilisés dans l'expression lambda. Cela garantit que chaque bouton reçoit son propre paramètre distinct :

user_button = Tkinter.Button(self.root, text=name,
                             command=lambda name=name: self.a(name))

En liant la valeur actuelle de la variable name à l'argument de mot-clé name du lambda à chaque itération de boucle, la fonctionnalité souhaitée est obtenue. Chaque bouton exécutera désormais la fonction a() avec son propre paramètre unique, comme prévu.

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