python - 为什么我不能更改 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 图标,有人可以告诉我代码有什么问题吗?
解决方案
确保资源(图像)路径和工作目录正确。
图像文件路径必须相对于当前工作目录。工作目录可能与 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))
推荐阅读
- twitter-bootstrap - 如何延迟加载第 3 方视频(通过 javascript 提供)
- java - 如何在 JOOQ 中使用普通 SQL 作为派生表?
- amazon-web-services - 是否可以在同一集群中的两个不同 AWS Redshift 数据库之间运行连接?
- vba - VisualBasic Word 中没有与应用程序关联的等待方法
- excel - 从数据表中提取多封电子邮件并基于同一模板制作单独的电子邮件
- node.js - 在 Node.js 中将 txt 文件导入到变量中,但变量的行为不像字符串
- acumatica - 导航记录后,商机页面中的自定义字段将被清除
- c# - Microsoft ADD - 应用注册 - 请求中指定的回复 url 与配置的回复 url 不匹配
- python - OpenCV/Python - 从灰度图像中找到灰度图案矩形的角坐标?
- c - 如何初始化具有非常量长度的数组?