Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich benutzerdefinierten Code gleichzeitig mit dem Mainloop von Tkinter ohne Multithreading ausführen?
Benutzerdefinierten Code gleichzeitig mit der Ereignisschleife von Tkinter ausführen
Beim Einsatz von Tkinter wird deutlich, dass die Ereignisschleife übermäßig viel Verarbeitungszeit beansprucht , was die Ausführung von benutzerdefiniertem Code behindert. Konkret erfordert in einem Fall die Simulation eines Vogelschwarms ständige Bewegung, aber diese Bewegung wird durch die Dominanz der Ereignisschleife über das System behindert.
Um dieses Problem zu beheben und die gleichzeitige Ausführung von benutzerdefiniertem Code mit der Hauptschleife zu ermöglichen Ohne die Komplexität von Multithreading kann die After-Methode des Tk-Objekts verwendet werden.
from tkinter import * root = Tk() def move(): # Custom code to update bird positions root.after(2000, move) # Schedule the move() function to run again in 2 seconds root.mainloop() # Start the Tkinter event loop
Die After-Methode plant die Ausführung einer Funktion nach einem bestimmten Intervall. Hier verwenden wir es, um die Funktion move() so zu planen, dass sie alle 2 Sekunden ausgeführt wird, um unserem benutzerdefinierten Code die Möglichkeit zu geben, zwischen Iterationen der Ereignisschleife ausgeführt zu werden.
Die Deklaration der After-Methode lautet wie folgt:
def after(self, ms, func=None, *args): """Call function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel."""
Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierten Code gleichzeitig mit dem Mainloop von Tkinter ohne Multithreading ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!