Die Daten im Fenster werden nicht aktualisiert weil Du das nirgends machst. Von alleine passiert da nichts. Du musst den Text von jedem Label auf einen neuen Wert setzen. Das geht mit ``label.config(text='neuer text')``.
Da Du die Werte der Labels einmal am Anfang setzt und dann jedesmal wenn Buchstaben gezählt wurden, solltest Du das in eine Funktion schreiben.
Und Du solltest über die Verwendung von Datenstrukturen anstelle von so fürchterlich vielen Namen nachdenken. Die Labels kannst Du zum Beispiel alle in eine Liste stecken und dann in einer Schleife abarbeiten.
Code: Alles auswählen
labels = list()
for dummy in xrange(26):
label = tk.Label(hauptfenster, font=schrift)
label.pack(side=tk.LEFT)
labels.append(label)
Jetzt hast Du 26 Labels in einer Liste und kannst eine Funktion schreiben, welche den entsprechenden Text in jedes einträgt.
Wie man sieht habe ich den Quelltext so geschrieben, als wenn `Tkinter` unter dem Namen `tk` importiert wurde. "Sternchenimports" sollte man vermeiden, gerade bei Modulen die soviel Inhalt haben wie GUI Toolkits.
Die Liste mit den Zahlen lässt sich kürzer mit Nullen initialisieren:
Code: Alles auswählen
In [14]: [0] * 10
Out[14]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Den Text in eine Liste umzuwandeln ist nicht nötig, man kann über die einzelnen Buchstaben mit einer ``for``-Schleife iterieren. Ansonsten kann man die Funktion wesentlich kürzer als ``text2liste = list`` schreiben.
Code: Alles auswählen
In [15]: for c in 'spam':
....: print c
....:
s
p
a
m
In [16]: list('spam')
Out[16]: ['s', 'p', 'a', 'm']
In der Funktion `pruefer()` wird versucht dem Ergebnis der Funktion `counter()` ein Ergebnis zuzuweisen -- das geht nicht.
Code: Alles auswählen
In [19]: f() = 42
------------------------------------------------------------
SyntaxError: can't assign to function call
Die Leerzeichen sind teilweise sehr komisch gesetzt. Normalerweise schreibt man eines vor und nach binären Operatoren und Zuweisungen und keines zwischen Namen und Argumenten bei Funktionen und Methoden.
Beim `Rechenknopf` ist ein Fehler beim binden des `command`. Es wird nicht die Funktion `pruefer` sondern das Ergebnis eines Aufrufs dieser Funktion als Kommando an den Knopf gebunden, also eine Liste.
Die Funktion `eingabe()` ist eigentlich nur ein anderer Name für `raw_input()`. Die kann man sich also sparen. Ebenso ist `ausgabe()` ein wenig dünn für eine eigene Funktion.
Bleibt noch die `counter()` Funktion. Die ist viel zu lang und umständlich. Wenn man so programmieren müsste, dann würde es ja keinen Spass mehr machen. Statt einem Namen pro Buchstaben sollte man hier auch eine Liste oder ein Dictionary zum zählen nehmen und den Eingabetext vorher mit der `lower()`-Methode in Kleinbuchstaben umwandeln, dann braucht man nur noch die zählen.