Pygame全屏模式无法通过按键退出问题求助
解决Pygame全屏程序无法退出的问题
嘿,我太懂你这种全屏卡死只能重启电脑的崩溃感了!咱们来快速定位问题,把这个坑填上。
问题根源
你的代码里缺少了Pygame核心的事件循环——Pygame不会自动检测用户的按键或窗口操作,必须通过事件循环主动监听这些输入。全屏模式下没有窗口的关闭按钮,一旦没做事件处理,程序就彻底“失联”,只能硬重启。
修复后的完整代码
先把你没写完的代码补全,加上关键的事件处理逻辑:
import pygame import sys # 别忘了导入sys,用来彻底终止程序 pygame.init() WIDTH = 1366 HEIGHT = 768 screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN) pygame.display.set_caption('Katso') # 加载图片(假设你的资源路径正确) PENGUIN = pygame.image.load("assets/download.png") MICKEY = pygame.image.load("assets/mickey.jpg") ADV = pygame.image.load("assets/adv.png") # 补全你未写完的图片加载 # 主循环 running = True while running: # 核心:事件处理循环,必须有这个才能捕获用户输入 for event in pygame.event.get(): # 检测窗口关闭事件(全屏下可能没用,但加上更稳妥) if event.type == pygame.QUIT: running = False # 检测按键按下,用ESC/Q键触发退出 if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: running = False # 把你的绘制逻辑放在这里 screen.blit(PENGUIN, (0, 0)) screen.blit(MICKEY, (200, 0)) screen.blit(ADV, (400, 0)) # 更新屏幕显示 pygame.display.flip() # 退出前一定要清理Pygame资源 pygame.quit() sys.exit()
关键修复点
- 导入sys模块:调用
sys.exit()可以彻底终止Python进程,避免残留 - 添加事件循环:通过
pygame.event.get()遍历所有事件,才能捕获到你的按键操作 - 监听退出按键:全屏模式下用ESC或Q键触发退出,这是最直接的手动退出方式
- 正确退出流程:循环结束后先调用
pygame.quit()清理资源,再退出进程
额外小提示
- 测试全屏程序前,先去掉
pygame.FULLSCREEN参数用窗口模式调试,避免频繁重启 - 还可以加个鼠标点击退出的逻辑,比如监听
MOUSEBUTTONDOWN事件,多留一个退出后路
内容的提问来源于stack exchange,提问作者Telarius Chromack




