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

Pygame窗口无响应求助:Python3.6+Pygame1.9.3版本代码排查

解决你的Pygame窗口无响应问题

嘿,我看完你的代码立马就发现了核心问题——你在代码开头写了一个永远无法正常结束的while循环,直接把后面的游戏逻辑代码全“堵”住了!

给你拆解下问题根源:

  • 你在前半段定义了running = True并进入while running循环,虽然循环里处理了退出事件,但这个循环不结束的话,后面的Game类定义、主程序入口代码根本没机会执行!你的程序一直卡在这个没有画面更新、没有延迟的空循环里,窗口自然会出现无响应的情况。

另外还有几个小细节需要调整:

  1. 你重复调用了pygame.init(),这个操作只需要执行一次就够了
  2. 游戏循环里最好加入帧率控制,避免CPU占用过高
  3. 要确保player.png和你的代码文件在同一目录下,否则会出现图片加载失败的问题

下面是修正后的完整代码:

import pygame

# 只初始化一次Pygame即可
pygame.init()
screen = pygame.display.set_mode((640, 480))

class Game(object):
    def main(self, screen):
        # 加入异常捕获,方便排查图片加载问题
        try:
            image = pygame.image.load('player.png')
        except pygame.error:
            print("无法加载player.png,请确认图片和代码在同一目录下!")
            return
        
        # 用Clock控制游戏帧率
        clock = pygame.time.Clock()
        
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return
            
            screen.fill((200, 200, 200))
            screen.blit(image, (320, 240))
            pygame.display.flip()
            
            # 控制帧率为60帧/秒,避免窗口无响应
            clock.tick(60)

if __name__ == '__main__':
    Game().main(screen)

关键修改点说明:

  • 删掉了开头多余的while循环,让程序能正常执行到核心游戏逻辑
  • 加入图片加载的异常捕获,方便你排查资源问题
  • 新增pygame.time.Clock()控制帧率,既降低CPU占用,也让窗口运行更稳定
  • 移除了重复的初始化和窗口创建代码

你替换成这个版本,再确认player.png路径正确,应该就能正常运行啦!

内容的提问来源于stack exchange,提问作者Isaac Volpe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:11:47