Pygame中event.type按键判断仅单分支生效问题求助
问题根因
ESC退出分支的判断逻辑存在属性调用错误:你写了event.type == pygame.K_ESCAPE,但pygame.K_ESCAPE是按键常量,属于事件的key属性,不属于type属性,所以这个判断条件永远无法成立,自然触发不了退出逻辑。之前出现两个分支效果反转的情况,大概率是你此前写反了两个分支的属性判断逻辑。
修正后的代码
gamestate.draw(window) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): finis = True if event.type == pygame.KEYDOWN and event.key == pygame.K_UP: print("ok") pygame.display.update()
可选优化建议
- 可以将相同的
KEYDOWN事件判断抽出来嵌套,减少重复判断,逻辑也更清晰:
for event in pygame.event.get(): if event.type == pygame.QUIT: finis = True elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: finis = True elif event.key == pygame.K_UP: print("ok")
- 你当前代码重复调用了两次
pygame.display.update(),实际只需要保留一次即可,重复调用不会产生额外效果,还会增加不必要的性能消耗。
内容的提问来源于stack exchange,提问作者lvbartow
相关产品推荐
相关产品推荐

