Hide the "Failed to load" message when loading an invalid image, wxpython

Question:

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

If i run this, it will automatically show an error message saying that it failed to load the image. How can I stop my program from doing this?

Asked By: thelost

||

Answers:

If all you’re after is to stop the exception from raising, you can enclose it in a try/except block:

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

Bear in mind, it’s good practice to only ignore specific exceptions, and to do something when it occurs (ie tell user to pick another image):

try:
    bmp = wx.Image("C:UserDesktopcool.py", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
except <Specific Exception>, e:
    doSomething() # Handle exception

Since it’s an actual pop up message, you can use wx.Log_EnableLogging(False) to disable error logging in your application

To stop stderr redirecting you can set wx.App(redirect=False)

Or to make error log to a file instead of onscreen you can use:

wx.App(redirect=True,filename='error_log')
Answered By: Alex L

I can’t even get my wxPython code to run if I pass it an an invalid image. This is probably related to the fact that wxPython is a light wrapper around a C++ library though. See http://wiki.wxpython.org/C%2B%2B%20%26%20Python%20Sandwich for an interesting explanation.

The best way around issues like this is to actually use Python’s os module, like this:

if os.path.exists(path):
   # then create the widget

I do this sort of thing for config files and other things. If the file doesn’t exist, I either create it myself or don’t create the widget or I show a message so I know to fix it.

Answered By: Mike Driscoll

For wxpython version 4+, I was able to disable the popup message by calling

wx.Log.EnableLogging(False)

or by calling

wx.Log.SetLogLevel(wx.LOG_Error)

Relevant docs here

Answered By: user2682863

An alternative to wx.Log_EnableLogging(False) is wx.LogNull. From the docs:

# 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
Answered By: Joril
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.