I've been using matplotlib in a WX application. The particular application can uses many matplotlib figures within a MDI window class. The problem appears when there are about seven windows active in the MDI, and an eight is added. This causes a repaint of all seven matplotlib figures, which then triggers the following assertion

 

PyAssertionError: C++ assertion "wxAssertFailure" failed in "..\src\msw\dcmemory.cpp (133): Couldn't select a bitmap into wxMemoryDC

 

This appears on windows XP professional, Python 2.3,  wxPython 2.5.1.5, matplotlib 0.54.

 

The code snippet below reproduces the problem. Basically calling "show()" in a loop forces repaint of the same window many times. After a while a strange stack trace appears with the assertion above. Sometimes the stack trace creates garbage all over the screen which has to be cleared by repainting the whole screen.

 

 

import wx

import matplotlib

matplotlib.use('WX')

 

from matplotlib.matlab import *

 

class App(wx.App):

    """Application class."""

 

    def OnInit(self):

        t = arange(0.0, 2.0, 0.01)

        s = sin(2*pi*t)

        l = plot(t, s, linewidth=1.0)

        xlabel('time (s)')

        ylabel('voltage (mV)')

        title('About as simple as it gets, folks')

        legend('line', loc='upper right')

        for i in range(100):

            grid(True)

            show()

        # end for

            

        return True

 

#---------------------------------------------------------------------------

# run the app

app = App()

app.MainLoop()