PyQtGraph Как увеличить, используя кнопку

Я использую PyQTGraph вместе с PyQT5, и я добавил GraphicsLayoutWidget с событиями мыши для добавления маркеров.

canvas_ruler = pg.GraphicsLayoutWidget()
formLayout.addWidget(self.canvas_ruler)
plot_ruler = canvas_ruler.addPlot(name="Ruler")

plot_ruler.hideAxis('left')

canvas_ruler.scene().sigMouseMoved.connect(self.mouseMoved)
canvas_ruler.scene().sigMouseClicked.connect(self.mouseClicked)
plot_ruler.setMouseEnabled(x=True, y=False)

Что я хотел бы добавить, так это 2 кнопки для увеличения и уменьшения, в настоящее время колесико мыши выполняет масштабирование. Но я хочу отключить это и добавить 2 кнопки для него. Я, вероятно, должен:

setMouseEnabled(x=False, y=False)

Но я не знаю, как запустить масштабирование с помощью кода, я не смог найти его API, например sigMouseMoved.connect.

1 ответ

Ближайшая нативная вещь, которую делает pyqtgraph, которая приближается к этому (AFAIK), - это масштабирование с помощью колесика мыши. Функция MouseWheelEvent () в ViewBox достигает этого с помощью вызова функции ViewBox scaleBy().

Вы можете видеть источник для всех входов и более подробную информацию, но главными являются s (масштаб) и center (центр, вокруг которого нужно увеличить). Оставьте для центра значение «Нет», чтобы приблизить центр графика.

Передайте кортеж масштабов x и y масштабирования функции для масштабирования, <1 для увеличения и> 1 для уменьшения. например:

          def handle_plot_zoom_buttons(self, in_or_out):
        """
        see ViewBox.scaleBy()
        pyqtgraph wheel zoom is s = ~0.75
        """
        s = 0.9
        zoom = (s, s) if in_or_out == "in" else (1/s, 1/s)
        self.plot.vb.scaleBy(zoom)
Другие вопросы по тегам