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