ich möchte über einen Button folgende Funktion ausführen (auszugsweise):
Code: Alles auswählen
def Datensaetze(path,datensaetze,status):
try:
status.set("bitte warten")
with open(path.get(),"r") as f:
for i, l in enumerate(f):
pass
datensaetze.set(str(i+1))
except:
messagebox.showerror("Fehler","Es wurde keine Datei gewählt!")
status = tk.StringVar(self,"bereit")
button = ttk.Button(f1, text="Anzahl Datensätze ermitteln", command=lambda: Datensaetze(path, datensaetze, status))
label = ttk.Label(f1, textvariable= status)
Da es bei großen Dateien etwas dauern kann möchte ich das Label Status während der Funktion auf "bitte warten" setzten.
Das Problem: erst nach Ausführung der Funktion wird status.set() ausgeführt/übertragen. Das Programm hat 20 sec. gerechnet und dann kommt der Status: "bitte warten"
Auch mit Threading hat es nicht geklappt.
Ich denke die Mainloop aktualisiert die Oberfläche auf einmal wenn die Funktion beendet ist.
Weiß jemand wie ich das Problem beheben kann?