Введение
В этом руководстве вы узнаете, как добавить курсор в WX для отчета о координатах данных. Мы будем использовать Matplotlib, библиотеку для построения графиков на Python, которая предоставляет инструменты для создания различных типов графиков, диаграмм и карт.
Советы по работе с ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Создайте рамку для холста
Сначала мы создадим рамку для холста, которая будет содержать график Matplotlib. Мы добавим синусоидальный график, чтобы продемонстрировать функцию курсора.
class CanvasFrame(wx.Frame):
def __init__(self, ):
super().__init__(None, -1, 'CanvasFrame', size=(550, 350))
## Создайте Figure и добавьте подграфик
self.figure = Figure()
self.axes = self.figure.add_subplot()
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)')
## Создайте FigureCanvas для отображения графика
self.figure_canvas = FigureCanvas(self, -1, self.figure)
## Привяжите motion_notify_event для обновления статусной строки
self.figure_canvas.mpl_connect(
'motion_notify_event', self.UpdateStatusBar)
## Привяжите enter_window событие для изменения курсора
self.figure_canvas.Bind(wx.EVT_ENTER_WINDOW, self.ChangeCursor)
## Создайте размерщик и добавьте FigureCanvas в него
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(f"x={event.xdata} y={event.ydata}")
Резюме
Поздравляем! Вы успешно добавили курсор в WX для отчета о координатах данных с использованием Matplotlib. Следуя шагам, описанным в этом руководстве, вы можете легко настроить курсор под свои нужды.