在Pygame中使用变量设置按键的方法及退格键无响应问题排查
问题分析与修复
你的代码存在两个核心问题:
- 错误使用运算符:
event.type == pygame.QUIT是判断相等的语句,不是赋值操作,根本没修改event.type的值,自然触发不了后续的退出逻辑。 - 逻辑冗余绕弯:不需要修改事件类型来实现退出,直接设置循环控制变量
run=False即可。
修复方案一(保留原按键检测方式)
直接在检测到退格键时终止循环:
keys = pygame.key.get_pressed() if keys[pygame.K_BACKSPACE]: run = False # 直接终止主循环 if event.type == pygame.QUIT: run = False
修复方案二(符合Pygame事件驱动逻辑)
更推荐在事件循环中处理单次按键按下事件,避免持续检测的冗余:
for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # 处理退格键单次按下事件 if event.type == pygame.KEYDOWN: if event.key == pygame.K_BACKSPACE: run = False
补充说明
- 方案二的
KEYDOWN事件只会在按键首次按下时触发一次,完全匹配“按一次就退出”的需求; - 原代码的
get_pressed()会持续返回True(只要按键按住),虽能实现功能,但会产生冗余检测,按需选择即可。
内容的提问来源于stack exchange,提问作者BadWolfCodes
相关产品推荐
相关产品推荐

