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

已调用pygame.init()仍出现video system not initialized错误的技术求助

解决Pygame "video system not initialized" 错误的问题

我一眼就瞅出问题啦!你调用pygame.quit()之后没有退出那个无限循环,导致循环继续尝试获取事件——但这时候Pygame的视频系统已经被关闭了,自然就抛出video system not initialized错误咯。

咱们来拆解下你的代码逻辑:

  • 你初始化了Pygame,创建了窗口
  • 进入无限while True循环,不断处理事件
  • 当捕获到QUIT事件时,你调用pygame.quit()卸载了所有Pygame模块,但循环还在继续跑!
  • 下一次循环执行pygame.event.get()的时候,因为视频系统已经被销毁,Pygame就会报错。

给你两种修正方案,都能解决问题:

方案1:用标志位结束主循环(推荐)

这种方式更规范,先结束事件循环,再统一清理Pygame资源:

import pygame
pygame.init()
screen = pygame.display.set_mode((900,500))

# 用一个标志位控制循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 把标志位设为False,结束主循环
            running = False

# 循环结束后再卸载Pygame
pygame.quit()

方案2:直接退出程序

如果你想在触发QUIT事件时立刻退出,可以调用sys.exit()(记得要导入sys模块):

import pygame
import sys

pygame.init()
screen = pygame.display.set_mode((900,500))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

两种方案都能避免循环在Pygame资源被释放后继续执行事件获取操作,也就不会再触发那个错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:57:43