隐藏加载无效图片时的“加载失败”消息,wxpython

2 投票
4 回答
2144 浏览
提问于 2025-04-17 12:19
bmp = wx.Image("C:\User\Desktop\cool.bmp", wx.BITMAP_TYPE_ANY).ConvertToBitmap()

如果我运行这个,它会自动显示一个错误信息,说是无法加载图片。我该怎么做才能让我的程序不这样做呢?

4 个回答

1

对于wxpython 4及以上版本,我可以通过调用下面的代码来关闭弹出消息:

wx.Log.EnableLogging(False)

或者通过调用下面的另一段代码:

wx.Log.SetLogLevel(wx.LOG_Error)

相关文档可以在这里找到

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) 来关闭你应用程序中的错误日志记录。

要停止错误输出重定向,你可以设置 wx.App(redirect=False)

或者,如果你想把错误记录到文件中而不是在屏幕上显示,可以使用:

wx.App(redirect=True,filename='error_log')
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

我通常会对配置文件和其他文件做这样的处理。如果文件不存在,我要么自己创建它,要么就不创建这个组件,或者我会显示一个消息,这样我就知道需要去修复它。

撰写回答