Heim >Backend-Entwicklung >Python-Tutorial >Wie vermeide ich Probleme mit dem Variablenbereich beim Zuweisen von Tkinter-Schaltflächenbefehlen in einer Schleife?
Tkinter-Schaltflächenbefehlszuweisung in einer For-Schleife mit Lambda
In Tkinter besteht eine häufige Aufgabe darin, eine Reihe von Schaltflächen mithilfe eines for zu erstellen Schleife. Bei der Zuweisung von Befehlen zu diesen Schaltflächen mit einer Lambda-Funktion entsteht jedoch eine Gefahr.
Das Problem tritt auf, wenn innerhalb der Lambda-Funktion ein Variablenname verwendet wird, der auch im for-Schleifen-Iterator verwendet wird. Diese Variable wird im Verlauf der Schleife ständig neu zugewiesen, was dazu führt, dass alle Schaltflächen denselben Wert für die zugewiesene Variable verwenden.
Um dieses Problem zu beheben, ändern Sie den Lambda-Ausdruck, indem Sie ein Standard-Schlüsselwortargument einführen. Dadurch wird der aktuelle Wert der Variablen jedes Mal durch die Schleife an das Schlüsselwortargument des Lambda gebunden:
user_button = Tkinter.Button(self.root, text=name, command=lambda name=name: self.a(name))
Durch Zuweisen des Variablennamens zum Schlüsselwortargument „Name“ wird der aktuelle Wert bei jeder Iteration an das Argument gebunden. Dadurch wird sichergestellt, dass jede Schaltfläche beim Klicken ihren eindeutigen Parameter behält.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Probleme mit dem Variablenbereich beim Zuweisen von Tkinter-Schaltflächenbefehlen in einer Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!