加载无效图像时隐藏"Failed to load"消息,wxpython


bmp = wx.Image("C:UserDesktopcool.bmp", wx.BITMAP_TYPE_ANY).ConvertToBitmap()

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

如果您想要的只是阻止引发异常,则可以将其包含在 try/except 块中:

try:
    bmp = wx.Image("C:UserDesktopcool.py", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
except:
    pass

请记住,最好只忽略特定的异常,并在发生异常时执行某些操作(即告诉用户选择另一个图像(:

try:
    bmp = wx.Image("C:UserDesktopcool.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')

对于 wxpython 版本 4+,我能够通过调用来禁用弹出消息

wx.Log.EnableLogging(False)

或致电

wx.Log.SetLogLevel(wx.LOG_Error)

相关文档在这里

wx.Log_EnableLogging(False)的替代方法是wx.LogNull 。从文档中:

# There will normally be a log message if a non-existent file is
# loaded into a wx.Bitmap.  It can be suppressed with wx.LogNull
noLog = wx.LogNull()
bmp = wx.Bitmap('bogus.png')
# when noLog is destroyed the old log sink is restored
del noLog
如果我

传递给一个无效的图像,我什至无法让我的 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

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

相关内容

最新更新