我不知道在哪里开始描述我遇到的问题。
我有一个使用大量图片的项目。工具栏,菜单,列表等我正在使用PyDev在Eclipse中开发。我能够成功地从Eclipse中运行我的程序,但需要将其编译为可执行文件,以便可以部署它。
当我第一次尝试使用Py2Exe编译时,我的所有图像都没有加载,因为它们使用的是相对路径。我在这里找到了信息:http://www.daniweb.com/forums/thread255458.html,其中包含有关如何将相对路径转换为绝对路径的信息,但选择不去那条路线,因为它需要在所有图像路径上使用额外的包装。
相反,我选择使用Img2Py将我的所有图像转换为资源文件。我现在有一个资源文件夹,其中包含我的应用程序所需的每个图像的.py文件。使用Py2Exe重新编译时,我能够验证library.bin zip文件是否包含我的资源文件夹以及每个图像的相应.pyo文件。当我启动可执行文件时,我的大多数图像都不会显示。例如,在我的工具栏上,正确显示启用状态图像,而缺少禁用状态图像。在我的列表中,我的图像都没有显示。在菜单图像中显示正确。
在我的工具栏类中,如果我不使用已禁用的图像,而是允许wx使用它的默认行为来显示已启用禁用状态的启用图像,但这对我的列表图标没有帮助。我甚至不确定在这里显示哪些代码是相关的 - 一切都在Eclipse中正常工作,只有在使用Py2Exe编译后才会遇到这些问题。
任何建议或意见将不胜感激。提前谢谢,
答案 0 :(得分:1)
我能够通过在我的img2py调用中添加append=True
选项并删除图像模块名称中的下划线来解决这个问题。我不明白为什么这会产生影响,因为有效的图像在其名称中也包含下划线,但它似乎让我可以解决这个问题。我生成Images资源的代码最终是这样的:
from wx.tools.img2py import img2py
from glob import glob
for f in glob('*.png'):
o = f.replace('-', '').replace('_', '').replace('.png', '')
img2py(f, 'Images.py', append=True, imgName=o, icon=True)
希望这对未来的其他人有用。我知道我最终会回头谈论它。