我正在使用Pyinstaller为我的wxPython应用程序构建一个Windows文件可执行文件。我想添加一个窗口图标,只有将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')
答案 0 :(得分:0)
首先,使用--icon
选项,您已将.ico
包含在可执行文件中。但是wxPython无法从.exe
中提取它(我想通过使用Windows系统调用它不会那么难,但这不是重点)。
因此,您必须第二次包含.ico
- 文件,这次是在文件系统中。
stackoverflow article linked by you已有答案:
修改.spec
文件以将图标文件包含在捆绑的应用程序中。
运行应用程序时,它会在临时位置解压缩捆绑的文件。正如您引用的文章中所指出的,资源路径在sys._MEIPASS
中指定。在形成完整文件限定符时,不要忘记考虑子目录(例如images
./images/icon.ico
)。
显示您的.spec
文件修改和检索图标的代码以获得进一步的帮助