Rom*_*dgz 5 python icons wxpython
我想在我的wxpython程序中设置一个图标.到目前为止,在阅读了许多页面和示例之后,我能够在窗口设置一个图标,这在使用alt + tab时也能正常工作(我在Windows 7上工作).
但任务栏上的图标是通常的python默认图标.
我不明白为什么这么简单的任务会有这么多麻烦.
这是我的代码:
class GraphFrame(wx.Frame):
""" The main frame of the application
"""
title = 'My first wxprogram'
def __init__(self):
wx.Frame.__init__(self, None, -1, self.title)
ico = wx.Icon('dog.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(ico)
self.set_icon
self.create_menu()
self.create_status_bar()
self.create_main_panel()
#...
Run Code Online (Sandbox Code Playgroud)
我找到了另一个SO问题/答案与PyQt相关的第二个答案中描述的问题.在创建GUI之前将此代码添加到您的应用程序:
import ctypes
myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
Run Code Online (Sandbox Code Playgroud)
使用任务栏按钮设置可以正确设置图标.
可在此处找到解释:https://stackoverflow.com/a/1552105/674475
目前无法通过 wxPython 设置任务栏图标(除非你破解系统变量),这是因为 Windows 从可执行文件中获取应用程序图标(在你的情况下是 Python)
如果您使用pyinstaller或py2exe(我更喜欢前者),则在编译时可以设置应用程序图标 - 这将使任务栏图标正确。
如果使用pyinstaller,您需要在规范文件中设置图标:
exe = EXE(pyz,
a.scripts,
a.binaries,
a.datas,
name=os.path.join('..\\path\\to\\output', 'AppName.exe'),
icon='C:\\abs\\path\\to\\icon\\icon.ico',
debug=False,
strip=False,
upx=False,
console=False )
Run Code Online (Sandbox Code Playgroud)
该icon=...行设置任务栏图标。
你的 python 代码的其余部分保持原样就可以了。