许多开发人员遇到使用 setWindowIcon 仅更改窗口左上角图标而未影响任务栏图标的问题。以下是解决方案,以及相关背景和步骤。
背景
在 Windows 7 中,任务栏图标关联的是“应用程序用户模型”,而不是单个应用程序窗口。Windows 会使用一些启发式方法来决定不同实例是否应该归属于同一个任务栏图标。例如,如果您有多个实例运行并且每个实例都有自己的图标,它们会被归属于单个任务栏图标。这也适用于所有由 pythonw.exe 托管的程序。因此,仅使用 setWindowIcon 改变窗口图标并不会影响任务栏图标。
解决方案
要正确设置任务栏图标,我们需要使用 Windows 的 API 明确定义应用程序的用户模型 ID(AppUserModelID)。这可以通过注册表配置,或者更简单地使用 Python 代码调用 Windows API。
方法
以下步骤展示了如何通过 ctypes 库在 Python 中设置 AppUserModelID,从而改变任务栏图标。
-
安装 PyQt4:
from PyQt4 import QtGui import ctypes -
定义应用程序 ID 并设置任务栏图标:
# 定义 AppUserModelID myap

最低0.47元/天 解锁文章
3032

被折叠的 条评论
为什么被折叠?



