@jqz4n: Naja, funktionieren ist relativ. Das funktioniert genau dann, wenn man genau einen Button für den Zähler hat, sonst müsste man für jeden Zähler eine neue Funktion schreiben. Der default-Wert für alle ``klicks`` ist nämlich immer der selbe (darauf baut deine Implementierung sogar auf). Wenn man das in Kauf nehmen will, dann ist die Implementierung über das Verlängern der Liste natürlich ganz unsinnig. Genau so gut könntest du für klicks eine Liste verwenden, welche genau ein Element als Inhalt hat: die Anzahl der Klicks:
Das ist natürlich noch immer ein grausamer Hack. Ein wenig schöner wird es, wenn du die Funktionen verpackst:
Code: Alles auswählen
def make_counter(initial=0):
value = initial
def counter():
...
value += 1
return counter
...
tkinter.Button(root,text="Klick mich",command=make_counter(0)).pack()
Das ganze ist übrigens noch immer total unpraktisch, da von außen nicht auf den Zähler zugegriffen werden kann. Daher bietet sich, wie von BlackJack schon vorgeschlagen, der Ansatz über eine eigene Klasse an.
Bei der Gelegenheit solltest du auch gleich noch einen weiteren Blick auf seinen Code werfen. Dein Vorgehen beim Importieren von Tkinter ist nicht gerade ideomatisch. Der Weg über die Ausnahme ist deutlich schöner.
Das Leben ist wie ein Tennisball.