traitsmpl.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import wx
  2. import matplotlib
  3. # We want matplotlib to use a wxPython backend
  4. #~ matplotlib.use('WXAgg')
  5. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  6. from matplotlib.figure import Figure
  7. from matplotlib.backends.backend_wx import NavigationToolbar2Wx
  8. from enthought.traits.api import Any, Instance
  9. from enthought.traits.ui.wx.editor import Editor
  10. from enthought.traits.ui.wx.basic_editor_factory import BasicEditorFactory
  11. class _MPLFigureEditor(Editor):
  12. scrollable = True
  13. def init(self, parent):
  14. self.control = self._create_canvas(parent)
  15. self.set_tooltip()
  16. def update_editor(self):
  17. pass
  18. def _create_canvas(self, parent):
  19. """ Create the MPL canvas. """
  20. # The panel lets us add additional controls.
  21. panel = wx.Panel(parent, -1, style=wx.CLIP_CHILDREN)
  22. sizer = wx.BoxSizer(wx.VERTICAL)
  23. panel.SetSizer(sizer)
  24. # matplotlib commands to create a canvas
  25. mpl_control = FigureCanvas(panel, -1, self.value)
  26. sizer.Add(mpl_control, 1, wx.LEFT | wx.TOP | wx.GROW)
  27. toolbar = NavigationToolbar2Wx(mpl_control)
  28. sizer.Add(toolbar, 0, wx.EXPAND)
  29. self.value.canvas.SetMinSize((10,10))
  30. return panel
  31. class MPLFigureEditor(BasicEditorFactory):
  32. klass = _MPLFigureEditor