我有一个PySide GUI应用程序(用Python 3编写,在Windows 7 Pro上运行),我正在使用以下方法设置应用程序图标:
class MyGui(QtGui.QWidget):
def __init__(self):
super(MyGui, self).__init__()
...
self.setWindowIcon(QtGui.QIcon('MyGui.ico'))
if os.name == 'nt':
# This is needed to display the app icon on the taskbar on Windows 7
import ctypes
myappid = 'MyOrganization.MyGui.1.0.0' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
...
我从这个答案那里学到了ctypes
的知识。如果我删除这些代码行,当我运行python MyGui.py
时,任务栏中会显示Python图标。
包含这些代码行后,一切看起来都很好,窗口和任务栏都有正确的图标。然而,当我使用cxfreeze打包gui时,窗口和任务栏图标都变成了Windows通用的.exe图标。
我正在使用cxfreeze.bat
来打包应用程序,使用这里找到的指令,包括--icon
开关。在使用该开关后,生成的exe在资源管理器中查看时具有正确的图标。然而,当我启动应用程序时,应用程序窗口和任务栏都没有显示图标。我尝试将.ico文件复制到与.exe文件相同的目录中,但没有帮助。
我在Windows 7和8上遇到了同样的问题。奇怪的是,如果我将应用程序固定到任务栏,任务栏图标就会正确显示,但窗口图标仍然是通用的.exe图标。
如何才能使图标正确地显示?