Py2Exe & Img2Py - изображения, отсутствующие после компиляции - PullRequest
0 голосов
/ 05 ноября 2010

Я не уверен, с чего начать описание проблемы, с которой я столкнулся.

У меня есть проект, который использует большое количество изображений. Панели инструментов, меню, списки и т. Д. Я разрабатываю в Eclipse с PyDev. Я могу запустить свою программу из Eclipse успешно, но мне нужно будет скомпилировать ее в исполняемый файл, чтобы ее можно было развернуть.

Когда я впервые попытался скомпилировать, используя Py2Exe, ни одно из моих изображений не загрузилось, потому что они использовали относительные пути. Я нашел информацию здесь: http://www.daniweb.com/forums/thread255458.html с информацией о том, как превратить относительные пути в абсолютные пути, но решил не идти по этому пути, так как для этого требовалась дополнительная оболочка для всех путей изображения.

Вместо этого я решил использовать Img2Py для преобразования всех моих изображений в файлы ресурсов. Теперь у меня есть папка ресурса, содержащая файлы .py для каждого изображения, которое требуется для моего приложения. При повторной компиляции с Py2Exe я могу убедиться, что zip-файл library.bin содержит мою папку ресурсов и соответствующие файлы .pyo для каждого изображения. Когда я запускаю свой исполняемый файл, большинство моих изображений не отображаются. Например, на моих панелях инструментов изображения включенного состояния отображаются правильно, а изображения отключенного состояния отсутствуют. В моих списках ни одно из моих изображений не отображается вообще. В меню изображения отображаются правильно.

В моем классе Панели инструментов, если я отключу Отключенные изображения и вместо этого разрешу wx использовать его поведение по умолчанию, чтобы отобразить состояние «Включенные изображения» в отключенном состоянии, но это не поможет мне с моими значками списка. Я даже не уверен, какой код уместен для показа здесь - в Eclipse все работает правильно, только после компиляции с использованием Py2Exe я сталкиваюсь с этими проблемами.

Любые предложения или советы будут высоко оценены. Заранее спасибо,

1 Ответ

1 голос
/ 05 ноября 2010

Мне удалось преодолеть это, добавив опцию append=True к моим вызовам к img2py и убрав подчеркивания в именах модулей изображений. Я не понимаю, почему это дало эффект, учитывая, что изображения, которые работали, также содержали подчеркивания в их именах, но, похоже, позволили мне обойти проблему. Мой код для генерации ресурса 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)

Надеюсь, это может пригодиться кому-то еще в будущем. Я знаю, что в конце концов вернусь к этому.

...