首页 > 解决方案 > 为什么我不能更改 python 窗口图标?

问题描述

我想用代码更改 pygame 窗口图标:

import pygame
pygame.init()

screen = pygame.display.set_mode((800, 600))

pygame.display.set_caption("Snake Game")
icon = pygame.image.load('snake icon.png')
pygame.display.set_icon(icon)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

当我使用该代码时它不起作用,就像窗口自行关闭一样,但是当我将代码更改为:

import pygame
pygame.init()

screen = pygame.display.set_mode((800, 600))

pygame.display.set_caption("Snake Game")

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

它可以工作,但它仍然有默认的 pygame 图标,我想更改 pygame 图标,有人可以告诉我代码有什么问题吗?

标签: pythonpygame

解决方案


确保资源(图像)路径和工作目录正确。

图像文件路径必须相对于当前工作目录。工作目录可能与 python 文件的目录不同。

文件的名称和路径可以通过__file__. 当前工作目录可以os.getcwd()通过os.chdir(path).

import os

sourceFileDir = os.path.dirname(os.path.abspath(__file__))
os.chdir(sourceFileDir)

进一步看pygame.display.set_icon()

[...] 某些系统不允许窗口图标在显示后更改。可以在pygame.display.set_mode()设置显示模式之前调用此函数创建图标。

在之前设置图标screen = pygame.display.set_mode((800, 600))

icon = pygame.image.load('snake icon.png')
pygame.display.set_icon(icon)
screen = pygame.display.set_mode((800, 600))

推荐阅读