Pygame报错‘video system has not initialized’及窗口闪退问题求助
Pygame窗口闪退并报错"video system has not initialized"的排查与解决
问题原因
代码核心错误是混淆了Pygame退出事件常量和终止Pygame的函数:
pygame.quit()是执行型函数,调用后会立即关闭所有已初始化的Pygame模块(包括视频系统)。当代码执行到if event.type == pygame.quit()时,该函数被触发,直接终止视频系统,导致后续pygame.event.get()因依赖已关闭的视频系统抛出错误,窗口随即闪退。- 正确匹配退出事件的应该是
pygame.QUIT(大写常量,对应用户点击窗口关闭按钮的事件类型)。
解决方法
修正事件判断逻辑,并补充必要的窗口刷新和资源释放步骤:
import pygame pygame.init() screen = pygame.display.set_mode((800,600)) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: # 替换为事件常量,去掉函数调用的括号 running = False # 刷新窗口内容,避免系统判定窗口无响应 pygame.display.flip() # 程序退出前释放Pygame资源 pygame.quit()
关键修改点
- 事件类型修正:将
pygame.quit()改为pygame.QUIT,确保是匹配退出事件而非直接终止Pygame。 - 添加窗口刷新:
pygame.display.flip()会更新整个窗口显示内容,避免因循环内无画面更新导致系统判定窗口无响应。 - 延迟资源释放:把
pygame.quit()移到主循环结束后,保证程序退出前才释放所有Pygame资源。
内容的提问来源于stack exchange,提问作者Snowed
相关产品推荐
相关产品推荐

