有没有办法在任务栏中设置Pygame图标?set_icon()似乎只影响实际窗口中的小图标

Zac*_*ack 9 python pygame

在运行我的程序时,我配置的图标pygame.display.set_icon(icon)仅显示在窗口中.在任务栏中,默认的python图标保持不变.

有办法改变吗?

资源:

import pygame
from pygame.locals import *
import sys, os
import time

pygame.init()


# Load Images
try:
    bg = os.getcwd() + '\\images\\background.png'
    background = pygame.image.load(bg).convert()
except:
    print 'Error: Could not find background.png'

try:
    logo = os.getcwd() + '\\images\\logo.png'
    c_logo = pygame.image.load(logo).convert()
except:
    print 'Error: Could not find logo.png'

try:
    about_dialog_infile = os.getcwd() + '\\images\\about_dialog[alpha].png'
    about_dialog = pygame.image.load(about_dialog_infile).convert_alpha()
except:
    pass

i_icon = os.getcwd() + '\\images\\icon.png'
icon = pygame.image.load(i_icon)
pygame.display.set_icon(icon)
pygame.display.set_caption("Test program")
screenSize =(640,480)

screen = pygame.display.set_mode(screenSize,0,32)
pygame.display.set_caption('My Test Program')



while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            # sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            check_click(about, event.pos)


screen.blit(background, (0,0))

pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

Zac*_*ack 7

我终于弄明白了.

据我所知,在任务栏中实际设置该图标的唯一方法是在打包期间.

例如,使用pyinstaller,您可以调用python pyinstaller.py --icon=icon.icoWhere图标是您希望在任务栏中显示的图标.

  • @PenguinCoder在原始写作时我没有使用pyinstaller.我今天才意识到在尝试打包我的程序时,任务栏可以这种方式设置. (2认同)

Gen*_*her 7

您可能想看看这个。本质上,当Windows设置任务栏图标时,它使用各种巧妙的算法来决定要使用的图标。这样做的原因是,如果您有一个应用程序的多个实例(即多个 python 窗口),它们将被分组。这通常意味着 python 应用程序的图标设置为python.exe或 的图标pythonw.exe,具体取决于您的文件扩展名(.py.pyw)。然而,有一个解决方法。由于任务栏图标是由App User Models而不是特定的可执行文件设置的,因此可以使用以下模块更改应用程序的用户模型ctypes

import ctypes
myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
Run Code Online (Sandbox Code Playgroud)

所以,与其说它是 pygame 的东西,不如说它是 Windows 的东西。


Sup*_*man -2

我认为要设置任务栏图标,您必须使用set_caption

pygame.display.set_caption("Title", get_image_file("icon.png"))
Run Code Online (Sandbox Code Playgroud)

注意:设置标题并不设置窗口图标。调用 set_icon 和 set_caption 来设置两者。