Добавление курсора в WX

MatplotlibMatplotlibBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом руководстве вы узнаете, как добавить курсор в 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. Следуя шагам, описанным в этом руководстве, вы можете легко настроить курсор под свои нужды.