2010-11-05 65 views
0

我不知道从哪里开始描述我遇到的问题。Py2Exe&Img2Py - 编译后图像丢失

我有一个使用大量图像的项目。工具栏,菜单,列表等。我正在用PyDev在Eclipse中开发。我能够在Eclipse中成功运行我的程序,但需要将它编译为可执行文件,以便部署它。

当我第一次尝试使用Py2Exe进行编译时,没有加载我的图像,因为它们使用的是相对路径。我在这里找到了信息:http://www.daniweb.com/forums/thread255458.html,其中包含有关如何将相对路径转换为绝对路径的信息,但选择不去该路由,因为它需要在所有映像路径上使用额外的包装。

相反,我选择使用Img2Py将我的所有图像转换为资源文件。我现在有一个资源文件夹,其中包含我的应用程序所需的每个图像的.py文件。当用Py2Exe重新编译时,我能够验证library.bin zip文件包含我的资源文件夹和每个图像的相应.pyo文件。当我启动我的可执行文件时,大部分图像都不显示。例如,在我的工具栏上,当禁用状态图像丢失时,启用状态图像显示正确。在我的列表中,根本没有显示任何图像。在菜单中图像正确显示。

在我的工具栏类中,如果我不使用禁用图像,而是允许wx使用它的默认行为来灰显已禁用状态的已启用图像,但这对我的列表图标没有帮助。我甚至不确定哪些代码与此处显示的相关 - 在Eclipse中一切正常,只有在使用Py2Exe编译后,我才会遇到这些问题。

任何建议或意见将不胜感激。在此先感谢,

回答

1

我能够通过将append=True选项添加到我对img2py的调用并删除图像模块名称中的下划线来解决此问题。我不明白为什么这会产生影响,因为有效的图像也包含名称中的下划线,但它似乎使我能够解决问题。我的代码生成图像资源结束是这样的:

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) 

希望这可能会证明对其他人在未来有用。我知道我最终会回过头来看。