2009-05-17 4 views
2

私はwxPythonアプリケーションを起動するモジュールを持っています。このモジュールは、ファイルからwx.Bitmapをロードしてツールバーボタンとして使用します。それは次のようになります:wx.Bitmap("images\\new.png", wx.BITMAP_TYPE_ANY)。モジュール自体を実行するとうまくいきますが、別のディレクトリにある別のモジュールからインポートして実行しようとすると、wxPythonは例外を送出します。 (例外は、ツールバーに関して何か内部的なものであり、ビットマップの読み込みが正しく行われていないと考えられます)wxPython:ビットマップを書き出すときのパスの問題

どうすればよいですか?

答えて

2

「画像\ new.pngは」相対パスであるビットマップがロードされるとき、それはCUR DIR あるものdepenedますので、あなたはCUR DIR

os.chdir("location to images folder") 

または はロード機能を持っている設定のいずれかあなたのプログラムと比較して

def getProgramFolder(): 
    moduleFile = __file__ 
    moduleDir = os.path.split(os.path.abspath(moduleFile))[0] 
    programFolder = os.path.abspath(moduleDir) 
    return programFolder 

bmpFilePath = os.path.join(getProgramFolder(), "images\\new.png") 
+0

wxPythonでアプリケーションを作成する場合、この標準的なプラクティスですか? –

+0

これは相対パスを使用するアプリケーションで標準的な方法であると言いますが、この相対的なものを教えなければならない場合もあります –

+0

他の方法でイメージをアプリに埋め込むことはできますが、 –

1

wxPython FAQは、Pythonモジュールにアイコンファイルを埋め込むためにimg2py.pyと呼ばれるツールを使用することをお勧めします。このツールには、wxPythonディストリビューションが付属しています。

ここにはexample of embedding toolbar iconsがあります。