Heim >Backend-Entwicklung >Python-Tutorial >Wie vermeide ich Probleme bei der Erfassung von Lambda-Variablen beim Erstellen mehrerer Tkinter-Schaltflächen in einer Schleife?

Wie vermeide ich Probleme bei der Erfassung von Lambda-Variablen beim Erstellen mehrerer Tkinter-Schaltflächen in einer Schleife?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 22:11:12301Durchsuche

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

Auflösen der Schaltflächenbefehlszuweisung in einer Tkinter-for-Schleife mit Lambda

Beim Erstellen mehrerer Schaltflächen innerhalb einer for-Schleife mit der Lambda-Funktion wird die Zuweisung einer Es kann eine Herausforderung sein, für jede Schaltfläche einen eindeutigen Parameter festzulegen. Standardmäßig verweist der Lambda-Ausdruck auf die Namensvariable, die bei jeder Schleifeniteration neu zugewiesen wird. Dies führt dazu, dass alle Schaltflächen den zuletzt zugewiesenen Wert erben.

Um dieses Problem zu lösen, können im Lambda-Ausdruck Standardschlüsselwortparameter verwendet werden. Dadurch wird sichergestellt, dass jede Schaltfläche ihren eigenen eindeutigen Parameter erhält:

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

Durch die Bindung des aktuellen Werts der Variablen „name“ an das Schlüsselwortargument „name“ des Lambda bei jeder Schleifeniteration wird die gewünschte Funktionalität erreicht. Jede Schaltfläche führt nun wie vorgesehen die a()-Funktion mit ihrem eigenen eindeutigen Parameter aus.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Probleme bei der Erfassung von Lambda-Variablen beim Erstellen mehrerer Tkinter-Schaltflächen in einer Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn