Tkinter. Erstellen Sie mehrere Schaltflächen mit "unterschiedlicher" Befehlsfunktion
Zuallererst, entschuldige den Titel, ich konnte keinen besseren finden.
Der folgende Code ist eine minimierte Version eines Problems in meinem Python-Programm (ich bin übrigens ein Neuling).
def onClick(i):
print "This is Button: " + str(i)
return
def start():
b = [0 for x in range(5)]
win = Tkinter.Tk()
for i in range(5):
b[i] = Tkinter.Button(win,height=10,width=100,command=lambda : onClick(i))
b[i].pack()
return
Was es tut: Auf welchen Button ich auch immer klicke, er sagt "This is Button: 4".
Was ich möchte: Die erste Schaltfläche sollte "This is Button: 0" und so weiter anzeigen.
Ist das ein gewolltes Verhalten von Python? Und wenn die Antwort ja ist, warum ist das so? Wie kann ich es reparieren
uf der anderen Seite funktioniert dies gut:
def start():
x = [0 for x in range(5)]
for i in range(5):
x[i] = lambda:onClick(i)
x[i]()
return