2010-11-05 62 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) 

希望這可能會證明對其他人在未來有用。我知道我最終會回過頭來看。