Hallo Stigi,
sicher geht das, aber nicht mit Integer-Variablen, da diese in Funktionen im lokalen Namensbereich neu angelegt werden. Du müsstest sie also entweder über z.B. "global c_error" in der Funktion bekanntmachen, damit in die globale Variable geschrieben wird, oder Du verpackst sie in Objekte, auf die automatisch im globalen Namensbereich zugegriffen wird. Auch da gibt es viele Möglichkeiten:
Ein Dictionary:
Code: Alles auswählen
glob = {"error" : 0,
"autoedit" : 0,
"manuedit" : 0}
def autocorrect(): glob["autoedit"] += 1
def nocorrect(): glob["error"] += 1
def manucorrect(): glob["manuedit"] += 1
## test
nocorrect()
print glob
reicht für die angegebenen Anforderungen aus. Wenn Du es etwas komfortabler gestalten möchtest, kannst Du auch eine Klasse schreiben:
Code: Alles auswählen
class Dummy:pass
glob = Dummy()
glob.c_error = 0
glob.c_autoedit = 0
glob.c_manuedit = 0
def autocorrect(): glob.c_autoedit += 1
def nocorrect(): glob.c_error += 1
def manucorrect(): glob.c_manuedit += 1
Das hat den Vorteil, dass man weitere Methoden hinzufügen kann, z.B. kann man die Hochzählfunktionen als Methoden definieren, so hast Du alles kompakt in einem Objekt.
Ansonsten könntest Du noch die Variablenklasse
IntVar aus dem Tkinter-Modul verwenden, das wird aber wahrscheinlich zu umständlich.
Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...