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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage