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)