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

Pygame程序是否有强制退出选项?自定义游戏循环无法响应退出事件怎么办

问题根因

你代码中的事件判断条件存在错误:你使用的quit是Python内置的退出函数对象,并非pygame定义的窗口关闭事件常量,因此该判断永远为假,终止循环的逻辑永远不会触发。
另外你提到之前尝试用break语句终止也未生效,是因为break只能跳出当前所在的for循环,无法直接跳出外层的while游戏主循环。

修正方案

需要做两处核心调整:

  • 将事件判断条件修改为event.type == pygame.QUIT,匹配pygame的窗口关闭事件
  • 主循环终止后,需要调用pygame.quit()清理pygame占用的资源,再调用sys.exit()完全退出程序

完整可运行修正代码

import pygame
import sys

# 可根据需求调整FPS和窗口尺寸
FPS = 60
SCREEN_SIZE = (800, 600)

def draw_all():
    # 此处保留你原有的绘制逻辑
    pass

def main():
    pygame.init()
    # 必须先初始化窗口,否则事件监听会出现异常
    screen = pygame.display.set_mode(SCREEN_SIZE)
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        draw_all()
        # 若原有绘制逻辑中没有屏幕刷新,可在此处添加:pygame.display.flip()
    # 清理资源并退出
    pygame.quit()
    sys.exit()

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者Flowerfist.rkt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:57:03