【问题标题】:Py2Exe & Img2Py - Images Missing after CompilingPy2Exe & Img2Py - 编译后图像丢失
【发布时间】:2010-11-05 18:40:30
【问题描述】:

我什至不知道从哪里开始描述我遇到的问题。

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

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

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

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

任何建议或意见将不胜感激。提前致谢,

【问题讨论】:

    标签: eclipse wxpython pydev py2exe


    【解决方案1】:

    我可以通过在对 img2py 的调用中添加 append=True 选项并删除图像模块名称中的下划线来克服这个问题。考虑到有效的图像名称中还包含下划线,我不明白为什么这会产生影响,但它似乎让我绕过了这个问题。我生成图像资源的代码最终是这样的:

    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)
    

    希望这可能在将来对其他人有用。我知道我最终会再次提及它。

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多