【问题标题】:Setting Icon for PyInstaller ApplicationPyInstaller 应用程序的设置图标
【发布时间】:2019-01-12 19:51:54
【问题描述】:

我浏览过 Google、Reddit、StackOverflow、PyInstaller 文档,但我无法弄清楚。

我正在尝试为我的应用程序设置图标,但它不起作用。该图标应用于主 exe,但是,当它为 Windows 打开时,该图标不会显示在任务栏中。

图标被包含在内。我已经将EXE中的值图标直接设置为图标路径。我用过 Resource Hacker,我用过 RCEDIT,顺便说一句,它完全杀死了我的应用程序。我一辈子无法让应用程序的图标正确显示。

我已经尝试过 Windows 10 和 Windows 7。

即使我在没有 -F 的情况下运行 Pyinstaller,它仍然不会加载图标。我 100% 确定我的文件是 .ico 文件,并且包含多个可接受的大小,Resource Hacker 显示了所有可接受的 .ico 大小。



这是我正在使用的 powershell 命令:

pyinstaller -F -i C:\aNote\theme\anoteicon.ico --clean anotemain.spec

这是我的 .spec

# -*- mode: python -*-

block_cipher = None


a = Analysis(['anotemain.py'],
             pathex=['C:\\aNote'],
             binaries=[],
             datas=[('c:\\aNote\\theme\\anoteicon.png','theme'), 
             ('c:\\aNote\\theme\\kabook.png','theme'), 
             ('c:\\aNote\\theme\\Python.svg.png','theme'), 
             ('c:\\aNote\\theme\\anoteicon.ico','.'), 
             ('c:\\aNote\\anoteui.py','.'),
             ('c:\\aNote\\version.txt','.')],
             hiddenimports=["PyQt5.sip", "QtGui", "QtWidgets", "pyperclip", "webbrowser", "csv"],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='aNote',
          debug=False,
          strip=False,
          upx=False,
          clean=True,
          runtime_tmpdir=None,
          console=False,
          icon='c:\\aNote\\theme\\anoteicon.ico',
          version='version.txt')

【问题讨论】:

    标签: python pyinstaller


    【解决方案1】:

    你试过这个命令吗?

    Pyinstaller.exe --onefile --windowed --icon=app.ico app.py

    更新您的 .specfile 并设置 console = True

    exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='aNote',
          debug=False,
          strip=False,
          upx=False,
          clean=True,
          runtime_tmpdir=None,
          console=True,
          icon='c:\\aNote\\theme\\anoteicon.ico',
          version='version.txt')
    

    使用示例代码,您可以运行窗口 UI 而不是控制台:

    from PyQt5 import QtGui
    
    app = QtGui.QApplication([])
    mainwindow = QtGui.QMainWindow()
    mainwindow.show()
    
    app.setWindowIcon(QtGui.QIcon('your.ico'))
    mainwindow.setWindowIcon(QtGui.QIcon('your.ico'))
    app.exec_()
    

    【讨论】:

    • 我当然有。
    • 它工作,但是,我不希望控制台窗口打开。我想把它隐藏起来。我们怎样才能做到这一点?
    • @AQuick Easy,您可以使用 PyQt5 创建一个框架,然后您可以隐藏控制台。我将在我的答案中发布代码。
    • 您的建议无效。然而,它在我的脑海中引发了一个想法。我为窗口图标分配了一个 .png 文件,而不是实际的 .ico 文件。将它从 .png 更改为 .ico,问题解决了。
    【解决方案2】:

    在 CMD 中使用您的脚本进入文件夹 (cd /Project) 如果你的文件夹在 d: 中,首先是 d:,然后是 cd /Project

    输入pyinstaller -w -F -i "icon.ico" script.py

    或者如果你的应用是控制台,那么pyinstaller -F -i "icon.ico" script.py

    【讨论】:

      【解决方案3】:

      我使用命令-i而不是--icon来解决它

      python -m PyInstaller --onefile -i='.\angular.ico' --name "MyApp" ".\main.py"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-16
        • 2016-11-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 2015-05-31
        相关资源
        最近更新 更多