pygame.event.get () не возвращает никаких событий в потоке - PullRequest
1 голос
/ 22 июня 2019

Итак, у меня есть этот код, который просматривает пользовательские вводы для игры в стиле pac-man.

def receiving_inputs(self):
    while True:
        events = pg.event.get()
        for event in events:
            if event.type == pg.KEYDOWN:
                if event.key == pg.K_UP:
                    self.move = 'n'
                elif event.key == pg.K_RIGHT:
                    self.move = 'e'
                elif event.key == pg.K_DOWN:
                    self.move = 's'
                elif event.key == pg.K_LEFT:
                    self.move = 'w'
        time.sleep(1/60)

threading.Thread(target=self.receiving_inputs).start()

Когда я нажимаю какие-либо клавиши на клавиатуре, я не получаю никаких событий, однако, перемещаяуказатель мыши возвращает событие, используя этот код.

Раздражает то, что этот точный код отлично работает, когда не в потоке.то есть когда в основном цикле программы.

Просто хочу сказать, что я хочу использовать поток здесь, чтобы минимизировать количество раз, когда Pygame не регистрирует нажатие клавиши (что, я полагаю, связано с другими вещами в основном цикле).

Заранее спасибо.

1 Ответ

1 голос
/ 22 июня 2019

Вы вообще не получаете никаких событий, потому что вы должны получать события в главном потоке.
См. Документацию pygame.event:

[...] Подсистема событий должна вызываться из основного потока.

Отправлять события можно только из другого потока, но очередь событий должна обрабатываться в основном потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...