Referenz in 'lambda' vermeiden
Verfasst: Montag 13. August 2007, 10:52
Guten Morgen!
Mein Ziel ist es, via Tkinter eine variable Anzahl an Buttons zu erstellen, wobei der Text auf dem Button noch Argument einer für command erstellten Funktion sein soll. Die Anzahl und Captions ergeben sich aus einer Liste:
Die Text auf den Buttons ist entsprechend, allerdings wird callback immer mit dem letzten Namen in der Liste als Argument aufgerufen. Ich versuche nun schon seit einiger Zeit vergebens, diese Referenz zu vermeiden:
Mein Ziel ist es, via Tkinter eine variable Anzahl an Buttons zu erstellen, wobei der Text auf dem Button noch Argument einer für command erstellten Funktion sein soll. Die Anzahl und Captions ergeben sich aus einer Liste:
Code: Alles auswählen
buttons = ["YES", "NO"]
for i, name in enumerate(buttons):
tk.Button(text=name, command=lambda: callback(name)).grid(row=1, column=i)
- copy.copy() von lambda, buttons, name
- Referenz der tk.Button() in einer Liste zu sichern
- Als Argument nicht name verwenden, sondern mit einem Indix auf die Liste zuzugreifen