2012-02-04 2 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을 참조하십시오.

이 같은 문제의 주위에 가장 좋은 방법은 실제로 다음과 같이 파이썬의 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'가 작동하지 않습니다 :이 오류는 '예외'로 처리됩니다. 그러나'wx.Log_EnableLogging (False)'는 팝업을 멈추기 위해 노력했다. – Basj