Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame.event.get()在线程内不返回任何事件_Python_Python 3.x_Pygame - Fatal编程技术网

Python pygame.event.get()在线程内不返回任何事件

Python pygame.event.get()在线程内不返回任何事件,python,python-3.x,pygame,Python,Python 3.x,Pygame,所以我有一段代码,它负责一个吃豆人风格的游戏的用户输入 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'

所以我有一段代码,它负责一个吃豆人风格的游戏的用户输入

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()
当我按下键盘上的任何键时,我不会得到任何事件,但是,移动鼠标将返回使用此代码的事件

令人恼火的是,当不在线程中时,这个精确的代码可以完美地工作。i、 当在程序的主循环中时

仅供参考,我想在这里使用一个线程来最小化pygame不注册按键的次数(我假设这是由于主循环中的其他原因)


提前感谢。

您根本没有任何事件,因为您必须在主线程中获取事件。
见以下文件:

[…]应该从主线程调用事件子系统


只能从其他线程发布事件,但必须在主线程中处理事件队列

这确实很有道理,但为什么我仍然会得到鼠标事件?我不知道是什么导致了这种行为。文档只是说“应该从主线程调用事件子系统”-因此,如果在线程中执行事件处理,那么行为是未定义的,可能取决于系统。这很公平