You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

关键修改点

  1. 事件类型修正:将pygame.quit()改为pygame.QUIT,确保是匹配退出事件而非直接终止Pygame。
  2. 添加窗口刷新:pygame.display.flip()会更新整个窗口显示内容,避免因循环内无画面更新导致系统判定窗口无响应。
  3. 延迟资源释放:把pygame.quit()移到主循环结束后,保证程序退出前才释放所有Pygame资源。

内容的提问来源于stack exchange,提问作者Snowed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:18:17