WX光标演示

例如,绘制光标并报告WX中的数据坐标。

  1. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  2. from matplotlib.backends.backend_wx import NavigationToolbar2Wx
  3. from matplotlib.figure import Figure
  4. import numpy as np
  5. import wx
  6. class CanvasFrame(wx.Frame):
  7. def __init__(self, ):
  8. wx.Frame.__init__(self, None, -1, 'CanvasFrame', size=(550, 350))
  9. self.figure = Figure()
  10. self.axes = self.figure.add_subplot(111)
  11. t = np.arange(0.0, 3.0, 0.01)
  12. s = np.sin(2*np.pi*t)
  13. self.axes.plot(t, s)
  14. self.axes.set_xlabel('t')
  15. self.axes.set_ylabel('sin(t)')
  16. self.figure_canvas = FigureCanvas(self, -1, self.figure)
  17. # Note that event is a MplEvent
  18. self.figure_canvas.mpl_connect(
  19. 'motion_notify_event', self.UpdateStatusBar)
  20. self.figure_canvas.Bind(wx.EVT_ENTER_WINDOW, self.ChangeCursor)
  21. self.sizer = wx.BoxSizer(wx.VERTICAL)
  22. self.sizer.Add(self.figure_canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
  23. self.SetSizer(self.sizer)
  24. self.Fit()
  25. self.statusBar = wx.StatusBar(self, -1)
  26. self.SetStatusBar(self.statusBar)
  27. self.toolbar = NavigationToolbar2Wx(self.figure_canvas)
  28. self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
  29. self.toolbar.Show()
  30. def ChangeCursor(self, event):
  31. self.figure_canvas.SetCursor(wx.Cursor(wx.CURSOR_BULLSEYE))
  32. def UpdateStatusBar(self, event):
  33. if event.inaxes:
  34. self.statusBar.SetStatusText(
  35. "x={} y={}".format(event.xdata, event.ydata))
  36. class App(wx.App):
  37. def OnInit(self):
  38. 'Create the main window and insert the custom frame'
  39. frame = CanvasFrame()
  40. self.SetTopWindow(frame)
  41. frame.Show(True)
  42. return True
  43. if __name__ == '__main__':
  44. app = App(0)
  45. app.MainLoop()

下载这个示例