2012-02-04 32 views
0
bmp = wx.Image("C:\User\Desktop\cool.bmp", wx.BITMAP_TYPE_ANY).ConvertToBitmap() 

これを実行すると、画像を読み込めないというエラーメッセージが自動的に表示されます。私のプログラムがこれをやめないようにするにはどうすればいいですか?あなたは後にしているすべての調達から例外を停止する場合無効な画像wxpythonを読み込んだときに「読み込みに失敗しました」というメッセージを表示しない

+0

このエラーをDialogBoxを「例外」に変換するにはどうすればよいですか? – Basj

答えて

0

私も実行するために、私のwxPythonのコードを取得することはできませんもし私がそれを渡すと、無効な画像です。これはおそらくwxPythonがC++ライブラリの軽いラッパーであるという事実に関連しています。興味深い説明については、http://wiki.wxpython.org/C%2B%2B%20%26%20Python%20Sandwichを参照してください。

このような問題の周りの最良の方法は、実際にこのように、Pythonのosモジュールを使用することです:

if os.path.exists(path): 
    # then create the widget 

私は設定ファイルや他のもののためにこの種のものを行います。ファイルが存在しない場合は、自分で作成するか、ウィジェットを作成しないでください。メッセージを表示して修正することができます。

+0

ああ、そうは思わないよ – thelost

+0

これはうまくいくが、他にもいくつかのエラーがあるかもしれない。例えば、ファイルは存在するが、内容は有効なイメージではない。ポップアップが再び表示されます。 このエラー処理を例外として復元することは可能でしょうか? – Basj

+0

この種のものを捕まえるのにsys.excepthookを使わなければならないかもしれません –

2

、あなたはtry/exceptブロックで囲むことができます。

try: 
    bmp = wx.Image("C:\User\Desktop\cool.py", wx.BITMAP_TYPE_ANY).ConvertToBitmap() 
except: 
    pass 

クマを念頭に置いて、それだけで特定の例外を無視することをお勧めだ、とそれが発生したときに何かをする(すなわち、別の画像を選択するようにユーザーに伝える):

try: 
    bmp = wx.Image("C:\User\Desktop\cool.py", wx.BITMAP_TYPE_ANY).ConvertToBitmap() 
except <Specific Exception>, e: 
    doSomething() # Handle exception 

を、それが実際のポップアップメッセージですので、あなたのアプリケーションシートでエラーログを無効にするwx.Log_EnableLogging(False)を使用することができます

がリダイレクト標準エラー出力を停止するには、あなたが設定することができwx.App(redirect=False)

か、使用できる代わりに、画面上のファイルにエラーログを作成します

wx.App(redirect=True,filename='error_log') 
+0

私はこれを試しましたが、まだエラーメッセージが表示されます。 – thelost

+0

このエラーメッセージは実際のポップアップメッセージです – thelost

+2

'try/except'が動作しません:このエラーは' Exception'として処理されています。しかし 'wx.Log_EnableLogging(False)'はポップアップを止めるために働きました。 – Basj

関連する問題