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

Если я запустил это, он автоматически отобразит сообщение об ошибке, в котором говорится, что загрузить изображение не удалось. Как я могу остановить свою программу от этого?Скрыть сообщение «Сбой при загрузке» при загрузке недопустимого изображения, wxpython

+0

Как мы можем преобразовать эту ошибку в этот диалог в «Исключение»? – Basj

ответ

0

я даже не могу получить мой WxPython кода для запуска если я передам ему недопустимый образ. Вероятно, это связано с тем, что wxPython является легкой оболочкой вокруг библиотеки C++. См. http://wiki.wxpython.org/C%2B%2B%20%26%20Python%20Sandwich для интересного объяснения.

Лучший способ вокруг таких вопросов, как это на самом деле использовать модуль ОС Питона, например:

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

я такого рода вещи для конфигурационных файлов и многое другое. Если файл не существует, я либо сам его создаю, либо не создаю виджет, либо я покажу сообщение, чтобы я его исправить.

+0

ah да, я думаю, что это не так. – thelost

+0

Это работает, но могут быть и другие ошибки: например, файл существует, но контент не является допустимым изображением. Затем всплывающее окно будет отображаться снова. Как вы думаете, можно ли восстановить эту обработку ошибок как Исключения? – Basj

+0

Возможно, вам придется использовать sys.excepthook, чтобы поймать подобные вещи –

2

Если все вы после остановить исключение из средств, вы можете заключить его в попытке/за исключением блока:

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

Смежные вопросы