Скрыть сообщение «Не удалось загрузить» при загрузке недопустимого изображения, wxpython - PullRequest
0 голосов
/ 04 февраля 2012
bmp = wx.Image("C:\User\Desktop\cool.bmp", wx.BITMAP_TYPE_ANY).ConvertToBitmap()

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

Ответы [ 2 ]

2 голосов
/ 04 февраля 2012

Если все, что вам нужно - это остановить исключение, вы можете заключить его в блок try / Кроме:

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) для отключения регистрации ошибок в вашем приложении

Чтобы остановить перенаправление stderr, вы можете установить wx.App(redirect=False)

Или сделать журнал ошибок в файле вместо экранного, вы можете использовать:

wx.App(redirect=True,filename='error_log')
0 голосов
/ 06 февраля 2012

Я даже не могу запустить свой код 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

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

...