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不注册按键的次数(我假设这是由于主循环中的其他原因)
提前感谢。您根本没有任何事件,因为您必须在主线程中获取事件。
见以下文件: […]应该从主线程调用事件子系统
只能从其他线程发布事件,但必须在主线程中处理事件队列 这确实很有道理,但为什么我仍然会得到鼠标事件?我不知道是什么导致了这种行为。文档只是说“应该从主线程调用事件子系统”-因此,如果在线程中执行事件处理,那么行为是未定义的,可能取决于系统。这很公平