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

求助:Pygame应用点击关闭时崩溃无法正常退出

解决Pygame窗口关闭崩溃的问题

嘿,我懂你碰到的糟心事了——每次关游戏窗口都崩溃确实挺闹心的。咱们来拆解下问题根源:

你的代码里,触发pygame.QUIT事件时只是把running设为False让循环结束,但Pygame初始化的系统资源(比如窗口、渲染模块)还没被清理,Python进程也没完全终止,这就导致了关闭窗口时的崩溃。

修复方案

你只需要在循环结束后,手动完成Pygame资源清理和进程终止两步操作就行:

  1. 先导入sys模块(用来安全终止Python进程)
  2. 在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:37:54