|
| 1 | +import wx |
| 2 | +import wx.aui |
| 3 | +import matplotlib as mpl |
| 4 | +from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas |
| 5 | +from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx as Toolbar |
| 6 | + |
| 7 | +class Plot(wx.Panel): |
| 8 | + def __init__(self, parent, id = -1, dpi = None, **kwargs): |
| 9 | + wx.Panel.__init__(self, parent, id=id, **kwargs) |
| 10 | + self.figure = mpl.figure.Figure(dpi=dpi, figsize=(2,2)) |
| 11 | + self.canvas = Canvas(self, -1, self.figure) |
| 12 | + self.toolbar = Toolbar(self.canvas) |
| 13 | + self.toolbar.Realize() |
| 14 | + |
| 15 | + sizer = wx.BoxSizer(wx.VERTICAL) |
| 16 | + sizer.Add(self.canvas,1,wx.EXPAND) |
| 17 | + sizer.Add(self.toolbar, 0 , wx.LEFT | wx.EXPAND) |
| 18 | + self.SetSizer(sizer) |
| 19 | + |
| 20 | +class PlotNotebook(wx.Panel): |
| 21 | + def __init__(self, parent, id = -1): |
| 22 | + wx.Panel.__init__(self, parent, id=id) |
| 23 | + self.nb = wx.aui.AuiNotebook(self) |
| 24 | + sizer = wx.BoxSizer() |
| 25 | + sizer.Add(self.nb, 1, wx.EXPAND) |
| 26 | + self.SetSizer(sizer) |
| 27 | + |
| 28 | + def add(self,name="plot"): |
| 29 | + page = Plot(self.nb) |
| 30 | + self.nb.AddPage(page,name) |
| 31 | + return page.figure |
| 32 | + |
| 33 | + |
| 34 | +def demo(): |
| 35 | + app = wx.PySimpleApp() |
| 36 | + frame = wx.Frame(None,-1,'Plotter') |
| 37 | + plotter = PlotNotebook(frame) |
| 38 | + axes1 = plotter.add('figure 1').gca() |
| 39 | + axes1.plot([1,2,3],[2,1,4]) |
| 40 | + axes2 = plotter.add('figure 2').gca() |
| 41 | + axes2.plot([1,2,3,4,5],[2,1,4,2,3]) |
| 42 | + #axes1.figure.canvas.draw() |
| 43 | + #axes2.figure.canvas.draw() |
| 44 | + frame.Show() |
| 45 | + app.MainLoop() |
| 46 | + |
| 47 | +if __name__ == "__main__": demo() |
| 48 | + |
0 commit comments