Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt pygame.event.get() keine Ereignisse zurück, wenn es innerhalb eines Threads ausgeführt wird?

Warum gibt pygame.event.get() keine Ereignisse zurück, wenn es innerhalb eines Threads ausgeführt wird?

DDD
Freigeben: 2024-11-13 06:14:02
Original
1042 Leute haben es durchsucht

Why is pygame.event.get() not returning events when executed within a thread?

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()
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage