Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt pygame.event.get() keine Ereignisse zurück, wenn es innerhalb eines Threads ausgeführt wird?
pygame.event.get() gibt keine Ereignisse innerhalb des Threads zurück
Problem:
In einem Spiel im Pac-Man-Stil mit PyGame ruft die Funktion „reception_inputs“ keine Tastaturereignisse ab, wenn sie innerhalb eines Threads ausgeführt wird, während Mausereignisse weiterhin registriert werden.
Code-Snippet:
def receiving_inputs(self): while True: events = pg.event.get() for event in events: if event.type == pg.KEYDOWN: # Handle keyboard input time.sleep(1/60) threading.Thread(target=self.receiving_inputs).start()
Lösung:
PyGame-Ereignisbehandlung muss im Hauptthread erfolgen.
Laut der PyGame-Ereignisdokumentation:
Die Das Ereignissubsystem sollte vom Hauptthread aufgerufen werden.
Obwohl Ereignisse von anderen Threads gesendet werden können, muss die Ereigniswarteschlange im Hauptthread verarbeitet werden. Die Lösung besteht also darin, den Aufruf von event.get() in den Hauptthread zu verschieben.
Das obige ist der detaillierte Inhalt vonWarum gibt pygame.event.get() keine Ereignisse zurück, wenn es innerhalb eines Threads ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!