Pygame窗口无响应求助:Python3.6+Pygame1.9.3版本代码排查
解决你的Pygame窗口无响应问题
嘿,我看完你的代码立马就发现了核心问题——你在代码开头写了一个永远无法正常结束的while循环,直接把后面的游戏逻辑代码全“堵”住了!
给你拆解下问题根源:
- 你在前半段定义了
running = True并进入while running循环,虽然循环里处理了退出事件,但这个循环不结束的话,后面的Game类定义、主程序入口代码根本没机会执行!你的程序一直卡在这个没有画面更新、没有延迟的空循环里,窗口自然会出现无响应的情况。
另外还有几个小细节需要调整:
- 你重复调用了
pygame.init(),这个操作只需要执行一次就够了 - 游戏循环里最好加入帧率控制,避免CPU占用过高
- 要确保
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
相关产品推荐
相关产品推荐

