wie man aus der Hauptschleife ausbrechen kann, ohne die GUI zu schließen, tkinter

Ich habe eine einfache Python-GUI, die ein Gitter ausfülltbasierend auf den Werten in einem Array, und ich möchte diese einfache GUI auf dem Bildschirm sitzen, während andere Funktionen ausgeführt werden. Die Zeit für diese anderen Funktionen ist unbestimmt, daher kann ich sie nicht in regelmäßigen Intervallen mit after (Zeit, Funktion) aufrufen

def go(self):
"""
Start the main GUI loop
:return:
"""
mainloop()

Die Hauptschleife beginnt in der go-Funktion, und ich möchte wissen, ob es möglich ist, entweder aus der Hauptschleife auszubrechen, ohne das Fenster zu schließen, oder die GUI zu zeichnen, ohne Hauptschleife aufzurufen.

Ich weiß, dass ich es kann

after(time, function)

aber ich habe keine Ahnung, was ich anrufen soll, um die Hauptschleife zu beenden, während ich die GUI auf dem Bildschirm belasse.

Antworten:

0 für die Antwort № 1

Verwenden Sie das Threading-Modul, um Ihre Funktion neben der Hauptschleife auszuführen:

from threading import Thread

def go(self):
t = Thread(target=function)
t.start() # start the thread in the background
mainloop()

0 für die Antwort № 2

Einfach gesagt:Sie können nicht, oder zumindest ist es nicht das, was Sie tun möchten. Ich würde empfehlen, den Code zu restrukturieren, um ihn in die Hauptschleife zu bringen (wie tkinter eine Klasse zu machen und die Funktionen in der init-Funktion aufzurufen). Wenn Sie Ihren ganzen Code posten, kann ich Ihnen dabei helfen.


0 für die Antwort № 3

Die Hauptschleife beginnt in der go-Funktion, und ich möchte wissen, ob es möglich ist, entweder aus der Hauptschleife auszubrechen, ohne das Fenster zu schließen, oder die GUI zu zeichnen, ohne Hauptschleife aufzurufen.

Es klingt, als hättest du ein ganz besonderes Bedürfnis. Um Ihnen eine wörtliche Antwort zu geben, ist es möglich, aus der Hauptschleife auszubrechen, ohne das Fenster zu schließen. Sie können anrufen quit auf das Root-Fenster zu verursachen mainloop beenden. Sie können neu starten mainloopoder ruf an update Methode im Root-Fenster, um Ereignisse zu verarbeiten.

Das ist normalerweise nicht so, wie eine GUI funktionieren sollte, aber wenn Sie absolut sicher sind, dass Sie das Fenster nicht benötigen, um zu aktualisieren, während das Programm läuft, können Sie das sicher tun, wenn Sie es wünschen.