Pygame窗口无响应但未抛出错误问题排查求助
问题原因&修复方案
- 核心问题是你没有给主循环加帧率控制,程序会以CPU能支撑的最大速率反复执行循环,CPU占用过高后系统就会判定窗口无响应,这也是控制台没有报错的原因:程序本身逻辑没有语法类错误,只是资源占用过高被系统拦截。
- 次要问题1:你定义的
player()绘制函数没有在主循环的绘制流程中调用,运行代码时看不到你预设的蓝色玩家矩形。 - 次要问题2:主循环结束后没有调用
pygame.quit()释放Pygame初始化占用的资源,可能会导致关闭窗口后出现残留进程或者卡死的情况。
修改后可正常运行的代码
import pygame pygame.init() screen = pygame.display.set_mode((800,600)) pygame.display.set_caption("Space Invaders") BLUE = (0, 0, 255) # 初始化时钟对象用于控制帧率 clock = pygame.time.Clock() def player(): pygame.draw.rect(screen,BLUE,(200,150,100,50)) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((0,0,0)) # 调用玩家绘制函数 player() pygame.display.update() # 限制帧率为60帧/秒,避免CPU占用过高 clock.tick(60) # 退出时释放Pygame占用的资源 pygame.quit()
内容的提问来源于stack exchange,提问作者Stak321
相关产品推荐
相关产品推荐

