2012-03-05 60 views
1

添加圖像我試圖在main.py使用位圖的wxPythonCX與wxPython的凍結,以EXE

我有:

imag=wx.Image("picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap() 

PICTURE.BMP是在同一文件夾作爲主。 py, 此程序在IDE中運行時工作

當我創建一個exe時它不起作用。

當我運行通過cx_freeze創建我得到彈出,並顯示此一個cmd框的exe:

wxBitmap CreatefromImage(): invalid image 

回答

0

好像你有2種不同的運行程序的方式,爲每個不同的工作文件夾。你有沒有嘗試提供完整的圖片.bmp文件的絕對路徑?

imag=wx.Image("C:/this/that/theother/picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap() 
+0

嗯,這項工作,如果我將在另一臺計算機上運行該程序 – thelost 2012-03-06 01:31:24

+0

你試過嗎?它有用嗎?如果確實如此,那麼這意味着問題在於您有兩種運行程序的方式,它們有不同的工作文件夾。解決方案是讓你在工作文件夾或子文件夾中存檔。 – ravenspoint 2012-03-06 02:45:53

+0

儘管你想使用相對路徑。硬編碼路徑幾乎總是打破。 – 2012-03-06 13:54:53

1

使用使用此代碼

imag=wx.Image(get_main_dir()+"/picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap() 
1

這種方法

import imp 
import os 
import sys 

def main_is_frozen(): 
    return (hasattr(sys, "frozen") or # new py2exe 
      hasattr(sys, "importers") # old py2exe 
      or imp.is_frozen("__main__")) # tools/freeze 

def get_main_dir(): 
    if main_is_frozen(): 
     return os.path.dirname(sys.executable) 
    return os.path.dirname(sys.argv[0]) 

並獲得圖像路徑我用這個辦法大綱here做。

基本上,這使用from wx.tools import img2py將圖像轉換爲.py文件中的字符串。然後可以在此.py文件的頂部使用from wx.lib.embeddedimage import PyEmbeddedImage將這些字符串讀作位圖。

這樣,圖像可以像普通的Python文件一樣精確處理。

例如,在images.py文件wxPython的演示,前幾行看起來像

from wx.lib.embeddedimage import PyEmbeddedImage 

Mondrian = PyEmbeddedImage(
    "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAHFJ" 
    "REFUWIXt1jsKgDAQRdF7xY25cpcWC60kioI6Fm/ahHBCMh+BRmGMnAgEWnvPpzK8dvrFCCCA" 
    "coD8og4c5Lr6WB3Q3l1TBwLYPuF3YS1gn1HphgEEEABcKERrGy0E3B0HFJg7C1N/f/kTBBBA" 
    "+Vi+AMkgFEvBPD17AAAAAElFTkSuQmCC") 

這是有點像,看起來像蒙德里安繪畫。