title: wxpython + matplotlib: closing figure hangs python
body: <p>This python program plots a figure in a wxpython window. It runs fine in Enthought Python Distribution 7.3-2, but when I close the figure, python keeps running and doesn't exit.</p>
  
  <p>What am I missing? When I create wxpython GUIs that don't use matplotlib, they exit correctly after I close the window. I guess there must be something about message loops in wxpython that I don't understand.</p>
  
  <pre><code># adapted from:
  # http://wiki.wxpython.org/Getting%20Started
  # http://www.cs.colorado.edu/~kena/classes/5448/s11/presentations/pearse.pdf
  
  import wx
  import pylab as pl
  import matplotlib
  from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  
  class GUIPanel(wx.Panel):
      def __init__(self, parent):
          wx.Panel.__init__(self, parent)
          self.parent = parent
  
          # create some sizers
          sizer = wx.BoxSizer(wx.VERTICAL)
  
          # A button
          self.button =wx.Button(self, label="Tada!")
          self.Bind(wx.EVT_BUTTON, self.OnClick,self.button)
  
          # put up a figure
          self.figure = pl.figure()
          self.axes = self.drawplot(self.figure)
          self.canvas = FigureCanvas(self, -1, self.figure)
  
          sizer.Add(self.canvas, 0, wx.ALIGN_CENTER|wx.ALL)
          sizer.Add(self.button, 0, wx.ALIGN_CENTER|wx.ALL)
  
          self.SetSizerAndFit(sizer)  
      def log(self, fmt, *args):
          print (fmt % args)
      def OnClick(self,event):
          self.log("button clicked, id#%d\n", event.GetId())
      def drawplot(self, fig):
          ax = fig.add_subplot(1,1,1)
          t = pl.arange(0,1,0.001)
          ax.plot(t,t*t)
          ax.grid()
          return ax
  
  app = wx.App(False)
  frame = wx.Frame(None)
  panel = GUIPanel(frame)
  frame.Fit()
  frame.Center()
  frame.Show()
  app.MainLoop()
  </code></pre>