求助:Pygame应用点击关闭时崩溃无法正常退出
解决Pygame窗口关闭崩溃的问题
嘿,我懂你碰到的糟心事了——每次关游戏窗口都崩溃确实挺闹心的。咱们来拆解下问题根源:
你的代码里,触发pygame.QUIT事件时只是把running设为False让循环结束,但Pygame初始化的系统资源(比如窗口、渲染模块)还没被清理,Python进程也没完全终止,这就导致了关闭窗口时的崩溃。
修复方案
你只需要在循环结束后,手动完成Pygame资源清理和进程终止两步操作就行:
- 先导入
sys模块(用来安全终止Python进程) - 在while循环结束后,调用
pygame.quit()和sys.exit()
修改后的完整代码
import pygame import sys # 新增导入sys模块 # Initialize the pygame pygame.init() # Create the screen screen = pygame.display.set_mode((800, 600)) # Title and Icon pygame.display.set_caption("Space Invaders") icon = pygame.image.load('ufo.png') pygame.display.set_icon(icon) # Run game until x is pressed running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 新增:清理资源并退出进程 pygame.quit() sys.exit()
为什么这么做?
pygame.quit():会关闭Pygame初始化的所有模块(窗口、图形渲染、音频等),释放占用的系统资源,避免资源泄漏。sys.exit():直接终止Python解释器,确保没有残留的后台线程或未清理的资源导致程序崩溃。
如果你想更直接,也可以在处理QUIT事件时直接调用这两个函数,效果完全一致:
if event.type == pygame.QUIT: pygame.quit() sys.exit()
改完之后再试试关闭窗口,应该就能正常退出啦~
内容的提问来源于stack exchange,提问作者Luuk Schouten
相关产品推荐
相关产品推荐

