Ich entwickelte eine einfache Python-Anwendung, die einige Sachen machte, dann entschied ich mich, eine einfache GUI mit Tkinter hinzuzufügen.Wie kann man Tkinter-Einfrieren leicht vermeiden?
Das Problem ist, dass, während die Hauptfunktion ihre Sachen macht, das Fenster einfriert.
Ich weiß, es ist ein häufiges Problem und ich habe bereits gelesen, dass ich Multithreads verwenden sollte (sehr kompliziert, weil die Funktion die GUI auch aktualisiert) oder meinen Code in verschiedene Funktionen aufteilen, die jeweils für eine kurze Zeit funktionieren. Wie auch immer, ich möchte meinen Code für solch eine dumme Anwendung nicht ändern.
Meine Frage ist: ist es möglich, gibt es keine einfache Möglichkeit, meine Tkinter-Fenster jede Sekunde zu aktualisieren? Ich möchte nur die KISS-Regel anwenden!
ich es eine Pseudocodebeispiel unter dem gebe ich versucht, aber hat nicht funktioniert:
class Gui:
[...]#costructor and other stuff
def refresh(self):
self.root.update()
self.root.after(1000,self.refresh)
def start(self):
self.refresh()
doingALotOfStuff()
#outside
GUI = Gui(Tk())
GUI.mainloop()
Es wird einfach refresh ausführen nur einmal, und ich kann nicht verstehen, warum.
Vielen Dank für Ihre Hilfe.
Sie können nicht erwarten, dass Ihr Programm 'self.refresh' jede Sekunde ausführt, während es' doingALotOfStuff() 'beschäftigt. Ich denke nicht, dass du Multithreading bewältigen wirst. –
Ich habe es. Es erscheint mir einfach verrückt, dass es keine einfache Lösung gibt, solch eine einfache Software zu machen ... Vielleicht zeigt uns jemand einen Trick! – decadenza