WX光标演示
例如,绘制光标并报告WX中的数据坐标。
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvasfrom matplotlib.backends.backend_wx import NavigationToolbar2Wxfrom matplotlib.figure import Figureimport numpy as npimport wxclass CanvasFrame(wx.Frame):def __init__(self, ):wx.Frame.__init__(self, None, -1, 'CanvasFrame', size=(550, 350))self.figure = Figure()self.axes = self.figure.add_subplot(111)t = np.arange(0.0, 3.0, 0.01)s = np.sin(2*np.pi*t)self.axes.plot(t, s)self.axes.set_xlabel('t')self.axes.set_ylabel('sin(t)')self.figure_canvas = FigureCanvas(self, -1, self.figure)# Note that event is a MplEventself.figure_canvas.mpl_connect('motion_notify_event', self.UpdateStatusBar)self.figure_canvas.Bind(wx.EVT_ENTER_WINDOW, self.ChangeCursor)self.sizer = wx.BoxSizer(wx.VERTICAL)self.sizer.Add(self.figure_canvas, 1, wx.LEFT | wx.TOP | wx.GROW)self.SetSizer(self.sizer)self.Fit()self.statusBar = wx.StatusBar(self, -1)self.SetStatusBar(self.statusBar)self.toolbar = NavigationToolbar2Wx(self.figure_canvas)self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)self.toolbar.Show()def ChangeCursor(self, event):self.figure_canvas.SetCursor(wx.Cursor(wx.CURSOR_BULLSEYE))def UpdateStatusBar(self, event):if event.inaxes:self.statusBar.SetStatusText("x={} y={}".format(event.xdata, event.ydata))class App(wx.App):def OnInit(self):'Create the main window and insert the custom frame'frame = CanvasFrame()self.SetTopWindow(frame)frame.Show(True)return Trueif __name__ == '__main__':app = App(0)app.MainLoop()
