Übergabe von Befehlsargumenten in einer tkinter-Schaltflächenerstellungsschleife
In Tkinter stehen Benutzer beim Erstellen einer Reihe von Schaltflächen in einer for-Schleife häufig vor dem Problem das Problem der Übergabe unterschiedlicher Befehlsargumente an jede Schaltfläche. Das Ziel besteht darin, durch Extrahieren des Zählwerts (i) während des Funktionsaufrufs zu identifizieren, welche Taste gedrückt wird.
Bei der Implementierung dieses Ansatzes stoßen Entwickler jedoch auf ein besonderes Problem: Unabhängig von der Anzahl der erstellten Tasten werden die gedruckten Der Wert bleibt gleich und entspricht der letzten Iteration der Schleife. Dies deutet darauf hin, dass die Schaltflächen zwar unabhängig voneinander erstellt werden, der i-Wert in ihren Befehlsargumenten jedoch offenbar gemeinsam genutzt wird.
Problem lösen
Um diese Schwierigkeit zu überwinden und das zuzuweisen Um den i-Wert für jede Schaltfläche zu korrigieren, muss die im Befehl verwendete Lambda-Funktion geändert werden:
command=lambda: self.open_this(i)
Im ursprünglichen Lambda wird die i-Variable an der Funktion erfasst Definitionszeit, und da es außerhalb der Schleife zugewiesen wird, wurde es zum Zeitpunkt des Aufrufs der Funktion bereits durch den letzten Schleifenwert ersetzt.
Das modifizierte Lambda löst dieses Problem durch die Einführung eines zusätzlichen Arguments i=i , die zum Zeitpunkt der Funktionsdefinition den aktuellen i-Wert einer neuen Variablen zuweist. Daher behält jede Tastenerstellung den entsprechenden i-Wert bei und gewährleistet so einen ordnungsgemäßen Betrieb.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eindeutige Argumente an Tkinter-Schaltflächen, die in einer Schleife erstellt wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!