Pygame设置游戏图标时报Unsupported image format错误且窗口闪退如何解决
你遇到的pygame.error: Unsupported image format报错和窗口闪退是因为pygame.image.load()未能正确读取目标图片文件,程序抛出未捕获异常直接终止运行,可通过以下步骤逐一排查修复:
路径校验
VS Code默认运行脚本的工作目录为打开的工作区根目录,而非py脚本所在目录,易出现相对路径找不到文件的问题。在图标加载代码前插入一行代码输出当前工作目录:import os; print(os.getcwd())
运行后查看控制台输出的路径,确认gameicon.png是否存放于该路径下。如果不在,可将图片移动到对应目录,或直接填写图片的绝对路径,示例:img = pygame.image.load(r'C:\Users\你的用户名\项目文件夹\gameicon.png')图片格式校验
如果文件后缀是手动修改为.png的,或图片存在损坏,也会触发格式不支持报错。你可以用系统自带的画图工具打开目标图片,重新选择「另存为- PNG格式」覆盖原文件,同时建议将图片尺寸调整为3232px或256256px的标准正方形尺寸,降低Pygame适配异常概率。优化加载代码
加载PNG图片时新增convert_alpha()方法,优化Pygame对透明通道的解析,修改加载代码为:img = pygame.image.load('gameicon.png').convert_alpha()调整代码顺序
建议将图标设置逻辑移到窗口初始化完成后、首次画面刷新前,避免渲染顺序导致的异常,调整后的完整代码段参考:
import time import pygame import os # Initializes Pygame pygame.init() # Game Screen Variables background_colour = (255,255,255) # Sets up the playscreen screen = pygame.display.set_mode((1100,750),0,32) pygame.display.set_caption("Dusco's Game") # Setting the game icon img = pygame.image.load('gameicon.png').convert_alpha() pygame.display.set_icon(img) screen.fill(background_colour) pygame.display.flip() # Game Loop running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.quit ()
如果以上步骤都操作后仍报错,可重新安装完整版Pygame修复解码依赖缺失问题,执行命令:pip uninstall pygame -y && pip install pygame
内容的提问来源于stack exchange,提问作者user15740892

