隐藏"无法加载"加载无效图像时出现错误信息,wxpython

时间:2012-02-04 13:01:28

标签: python wxpython wxwidgets

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

如果我运行它,它将自动显示一条错误消息,指出它无法加载图像。如何阻止我的程序执行此操作?

3 个答案:

答案 0 :(得分: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)来禁用应用程序中的错误记录

要停止stderr重定向,您可以设置wx.App(redirect=False)

或者要将错误记录到文件而不是屏幕上,您可以使用:

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

答案 1 :(得分: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

我为配置文件和其他东西做这类事情。如果文件不存在,我要么自己创建,要么不创建小部件,或者我显示消息,所以我知道要修复它。

答案 2 :(得分:0)

对于4x或更高版本的wxpython,我能够通过调用来禁用弹出消息

wx.Log.EnableLogging(False)

或致电

wx.Log.SetLogLevel(wx.LOG_Error)

相关文档here