your self.show() is passing the order to the frame; you need to comunicate with the canvas with draw()
I suggest you to use wxmpl, it is the best way to integrate mpl into wx http://agni.phys.iit.edu/~kmcivor/wxmpl/ Bob Cumming wrote: > Hello, > > I have a problem when I try to refresh a plot I create. > > The code is shown below: > > What I want to do is that when the user initiates a key press the plot > is updated. (If you minimise and maximise then it is done, the > problem is the repainting of the window. I have tried searching on > the web but cant find out how to do it (as well as trying lots of > things with show() but alas no luck so far). > > Any help much appreciated. > > Thanks > > > > import wx > import os > import matplotlib > # either WX or WXAgg can be used here. > # matplotlib.use('WX') > # from matplotlib.backends.backend_wxagg import FigureCanvasWx as > FigCanvas > matplotlib.use('WXAgg') > from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as > FigCanvas > from matplotlib.figure import Figure > import matplotlib.numerix as numpy > class PlotFrame(wx.Frame): > start_msg = """ Press Any Key to Initiate Plot - well thats the > plan... """ > def __init__(self): > wx.Frame.__init__(self, None, -1, "Test Plotting") > self.fig = Figure((5.0,3.0), 100) > self.canvas= FigCanvas(self, -1, self.fig) > self.axes = self.fig.add_axes([0.15,0.15,0.75,0.75]) > > sizer = wx.BoxSizer(wx.VERTICAL) > sizer.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW) > sizer.Add(wx.StaticText(self,-1, self.start_msg), 0, > wx.ALIGN_LEFT|wx.TOP) > self.canvas.Bind(wx.EVT_KEY_DOWN, self.onKeyEvent) > self.SetSizer(sizer) > self.Fit() > self.Build_Menus() > def Build_Menus(self): > """ build menus """ > MENU_EXIT = wx.NewId() > MENU_SAVE = wx.NewId() > menuBar = wx.MenuBar() > f0 = wx.Menu() > f0.Append(MENU_EXIT, "E&xit", "Exit") > menuBar.Append(f0, "&File"); > > self.SetMenuBar(menuBar) > self.Bind(wx.EVT_MENU, self.onExit , id=MENU_EXIT) > > def onKeyEvent(self,event=None): > """ capture , act upon keystroke events""" > print "I plot here" > self.Plot_Data() > print "but how do i get it to be drawn?" > self.Show() > > def onExit(self,event=None): > self.Destroy() > def Plot_Data(self): > t = numpy.arange(0.0,5.0,0.01) > s = numpy.sin(2.0*numpy.pi*t) > c = numpy.cos(0.4*numpy.pi*t) > self.axes.plot(t,s) > self.axes.plot(t,c) > > if __name__ == '__main__': > app = wx.PySimpleApp() > fig = PlotFrame() > fig.Show(True) > app.MainLoop() > > > > > > ------------------------------------------------------------------------ > She said what? About who? Shameful celebrity quotes on Search Star! > <http://www.msnsearchstar.com> > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > ------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users