Maison > développement back-end > Tutoriel Python > Comment éviter la duplication de paramètres dans la création de boutons Tkinter à l'aide de boucles For ?

Comment éviter la duplication de paramètres dans la création de boutons Tkinter à l'aide de boucles For ?

Linda Hamilton
Libérer: 2024-12-18 19:48:11
original
588 Les gens l'ont consulté

How to Avoid Parameter Duplication in Tkinter Button Creation Using For Loops?

Surmonter la duplication des paramètres de bouton dans les boucles For de Tkinter

Dans Tkinter, la création de boutons via une boucle for peut introduire un comportement inattendu si l'affectation appropriée des paramètres est pas mis en œuvre. Considérez l'extrait de code suivant :

users = {"Test": "127.0.0.0", "Test2": "128.0.0.0"}
row = 1
for name in users:
    user_button = Tkinter.Button(self.root, text=name,
                                 command=lambda: self.a(name))
    user_button.grid(row=row, column=0)
    row += 1
Copier après la connexion

Le résultat attendu est que chaque bouton reçoive son propre paramètre unique du dictionnaire de l'utilisateur. Cependant, en appuyant sur n'importe quel bouton, seule la dernière valeur du dictionnaire (par exemple "Test2") est imprimée.

Ce problème se pose car les expressions lambda utilisent la même variable de nom tout au long de la boucle. Chaque itération écrase la valeur précédente, laissant le lambda avec le dernier nom attribué dans la boucle.

Solution : paramètres de mot clé par défaut dans Lambda

Pour résoudre ce problème, vous pouvez utilisez les paramètres de mots-clés par défaut dans votre expression lambda. Voici le code corrigé :

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

En liant explicitement la valeur actuelle de la variable name à l'argument du mot-clé name du lambda, le lambda conserve le paramètre correct pour chaque bouton. Chaque pression sur un bouton déclenche désormais la sortie de paramètre unique souhaitée.

Cette technique garantit efficacement que chaque bouton conserve l'affectation de paramètre prévue dans la boucle for.

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