已调用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
相关产品推荐
相关产品推荐

