任务栏的wxpython图标

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)

Fen*_*kso 8

我找到了另一个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


Tyr*_*ave 3

目前无法通过 wxPython 设置任务栏图标(除非你破解系统变量),这是因为 Windows 从可执行文件中获取应用程序图标(在你的情况下是 Python)

如果您使用pyinstallerpy2exe(我更喜欢前者),则在编译时可以设置应用程序图标 - 这将使任务栏图标正确。

如果使用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 代码的其余部分保持原样就可以了。

  • -1,因为通常可以在 wxPython 中设置任务栏图标。 (2认同)