【问题标题】:Embed window icon to EXE with Pyinstaller使用 Pyinstaller 将窗口图标嵌入 EXE
【发布时间】:2017-04-26 15:04:33
【问题描述】:

我正在使用 Pyinstaller 构建我的 wxPython 应用程序的 Windows one 文件可执行文件。我想添加一个窗口图标,并且只有当我将 test.ico 文件放在构建的可执行文件旁边时,pyinstaller --icon=test.ico --onefile --noconsole test.pyw 才完全没问题。这让我同时分发 exe 和图标,这至少让人不舒服。

我也是

icon = wx.EmptyIcon()
icon.CopyFromBitmap(wx.Bitmap("test.ico", wx.BITMAP_TYPE_ANY))
self.SetIcon(icon)

在我的 wxPython 应用程序中。

我的研究表明建议对图标的 base64 字符串表示进行硬编码,但它是一个非常长的字符串,因为我还需要在纸上打印我的代码。我看到了this other post,我觉得它有我的答案,但我就是不明白。

所以。如何将图标嵌入到 exe 中?

编辑:.spec 文件

# -*- mode: python -*-

block_cipher = None

a = Analysis(['test.pyw'],
         pathex=['D:\\test'],
         binaries=[],
         datas=[],
         hiddenimports=[],
         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='test',
      debug=False,
      strip=False,
      upx=True,
      console=False , icon='test.ico')

【问题讨论】:

    标签: wxpython pyinstaller


    【解决方案1】:

    首先,使用--icon 选项,您已经将.ico 包含到您的可执行文件中。但是 wxPython 无法从 .exe 中提取它(我想使用 windows 系统调用不会那么难,但这不是重点)。

    因此,您必须再次将.ico-文件包含在文件系统中。

    stackoverflow article linked by you 已经有了答案:

    1. 修改.spec 文件以将图标文件包含到捆绑的应用程序中。

    2. 运行应用程序时,它会将捆绑的文件解压缩到一个临时位置。正如你所引用的文章中所指出的,资源路径是在sys._MEIPASS 中指定的。在形成完整文件限定符时,不要忘记考虑子目录(例如,images 对应于 ./images/icon.ico)。

    显示您的 .spec 文件修改和检索图标的代码以获得进一步帮助

    【讨论】:

    • 按要求编辑。所以你说我只需要将该代码添加到我的应用程序中?但是在哪里以及如何?
    • CopyFromBitmap 上,将"test.ico" 替换为调用resource_path 的结果,如另一篇stackoverplow 帖子中所述。在您的规范文件中,您仍然将test.ico 添加到a.datas(请记住,icon= 将图标添加到二进制文件中)。
    • 完美。只是为了记录,需要将那篇文章中的函数添加到 wxPython 脚本中。我没有作为一个类的方法,而是在它之外。工作正常。
    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2018-04-28
    • 2012-04-22
    • 2016-08-03
    相关资源
    最近更新 更多