pygame.event.get() 在线程内部不返回任何事件
- 2025-04-15 09:21:00
- admin 原创
- 60
问题描述:
所以我有这个代码来处理吃豆人风格游戏的用户输入。
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:
您根本无法获取任何事件,因为您必须在主线程中获取事件。
请参阅以下文档pygame.event
:
[...] 应该从主线程调用事件子系统。
只能从其他线程发布事件,但事件队列必须在主线程中处理。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD