Tkinter.Button command in einer Schleife

Fragen zu Tkinter.
Antworten
hypnoticum
User
Beiträge: 132
Registriert: Dienstag 15. März 2011, 15:43

Hallo,
wenn ich in einer Schleife mehrere Buttons erzeuge und diesen eine vom aktuellen Wert der Iterationsvariablen abhängige Funktion zuordnen will, wie mache ich das am besten?

Code: Alles auswählen

from Tkinter import *

root = Tk()
dict_ = {'eins':1, 'zwei':2, 'drei':3}

def printkey(testKey):
    print testKey

for i, key in enumerate(dict_.keys()):
    setattr(root, key, Button(root, text = 'print key ' + key, command = lambda: printkey(key)))
    button = getattr(root, key)
    button.grid(sticky = W, row = i, column = 0)
        
root.mainloop() 
BlackJack

@hypnoticum: Statt der ``lambda``-Funktion `functools.partial()` verwenden um aus `print_key` und `key` eine neue Funktion zu erstellen.
hypnoticum
User
Beiträge: 132
Registriert: Dienstag 15. März 2011, 15:43

Danke :) klappt super!
Antworten