Maison >développement back-end >Tutoriel Python >Pourquoi pygame.event.get() ne renvoie-t-il pas d'événements lorsqu'il est exécuté dans un thread ?
pygame.event.get() ne renvoie pas les événements dans le fil de discussion
Problème :
Dans un jeu de style Pac-man utilisant PyGame, la fonction getting_inputs ne récupère aucun événement de clavier lorsqu'elle est exécutée dans un thread, alors que les événements de souris sont toujours enregistrés.
Extrait de code :
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()
Résolution :
La gestion des événements PyGame doit avoir lieu dans le thread principal.
Selon la documentation de l'événement PyGame :
Le Le sous-système d'événements doit être appelé à partir du thread principal.
Bien que les événements puissent être envoyés à partir d'autres threads, la file d'attente des événements doit être traitée dans le thread principal. La solution consiste donc à déplacer l’appel event.get() dans le thread principal.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!