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