Pygame程序是否有强制退出选项?自定义游戏循环无法响应退出事件怎么办
问题根因
你代码中的事件判断条件存在错误:你使用的quit是Python内置的退出函数对象,并非pygame定义的窗口关闭事件常量,因此该判断永远为假,终止循环的逻辑永远不会触发。
另外你提到之前尝试用break语句终止也未生效,是因为break只能跳出当前所在的for循环,无法直接跳出外层的while游戏主循环。
修正方案
需要做两处核心调整:
- 将事件判断条件修改为
event.type == pygame.QUIT,匹配pygame的窗口关闭事件 - 主循环终止后,需要调用
pygame.quit()清理pygame占用的资源,再调用sys.exit()完全退出程序
完整可运行修正代码
import pygame import sys # 可根据需求调整FPS和窗口尺寸 FPS = 60 SCREEN_SIZE = (800, 600) def draw_all(): # 此处保留你原有的绘制逻辑 pass def main(): pygame.init() # 必须先初始化窗口,否则事件监听会出现异常 screen = pygame.display.set_mode(SCREEN_SIZE) clock = pygame.time.Clock() run = True while run: clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False draw_all() # 若原有绘制逻辑中没有屏幕刷新,可在此处添加:pygame.display.flip() # 清理资源并退出 pygame.quit() sys.exit() if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Flowerfist.rkt
相关产品推荐
相关产品推荐

