运行pygame绘图代码时窗口持续崩溃无响应如何解决
Pygame窗口无响应问题修复方案
问题原因
Pygame运行时必须持续消费系统事件队列(包含窗口关闭、移动、键鼠操作等事件),如果没有对应的事件处理逻辑,操作系统会判定程序处于未响应状态。同时你的代码存在两个额外问题:
- 创建的
PixelArray对象会锁定画布表面,导致后续绘制的图形无法正常渲染到窗口 - 缺少画面刷新步骤,绘制的内容不会主动展示在窗口上
修复后完整代码
import pygame import sys pygame.init() white=(255,255,255) black=(0,0,0) red=(255,0,0) green=(0,255,0) blue=(0,0,255) gameDisplay=pygame.display.set_mode((800,600)) gameDisplay.fill(black) Displayer=pygame.PixelArray(gameDisplay) # 释放PixelArray,解锁画布 del Displayer pygame.draw.line(gameDisplay, blue,(100,200),(300,450),5) pygame.draw.rect(gameDisplay, red, (400,400,50,25)) pygame.draw.circle(gameDisplay, white,(150,150),75) # 刷新窗口,渲染所有已绘制的图形 pygame.display.update() # 事件循环,持续处理系统事件避免窗口未响应 while True: for event in pygame.event.get(): # 监听窗口关闭事件,触发时正常退出程序 if event.type == pygame.QUIT: pygame.quit() sys.exit()
核心修改点说明
- 新增
sys模块导入,用于程序正常退出 - 主动释放
PixelArray对象,解除画布锁定,保证绘制内容可以正常输出 - 新增
pygame.display.update()调用,将所有绘制的图形一次性刷新到窗口 - 新增主事件循环,持续消费事件队列,处理窗口关闭请求,避免操作系统判定程序未响应
内容的提问来源于stack exchange,提问作者Sharav Sethi
相关产品推荐
相关产品推荐

