Восстановить масштаб до уровня по умолчанию после взаимодействия с мышью в pyqtgraph - PullRequest
2 голосов
/ 04 марта 2020

Есть ли способ восстановить уровень масштабирования по умолчанию для pyqtgraph графиков. Я знаю о маленькой кнопке, которая отображается на графике (нижний левый угол графика), который восстанавливает уровень масштабирования по умолчанию. Мне нужно восстановить его (после увеличения или уменьшения) из кода, когда происходит определенное событие.

Я проверил документацию pyqtgraph, но не смог найти аналогичные функции. .

Вот минимальный воспроизводимый код:

from PyQt5 import QtGui  
import pyqtgraph as pg
import numpy as np

app = QtGui.QApplication([])
w = QtGui.QWidget()
btn = QtGui.QPushButton('press me')
text = QtGui.QLineEdit('enter text')
listw = QtGui.QListWidget()
plot = pg.PlotWidget()

layout = QtGui.QGridLayout()
w.setLayout(layout)
layout.addWidget(btn, 0, 0) 
layout.addWidget(text, 1, 0) 
layout.addWidget(listw, 2, 0) 
layout.addWidget(plot, 0, 1, 3, 1) 

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
plot.plot(x, y, pen=(2,3), symbol='d')

w.show()

app.exec_()

1 Ответ

2 голосов
/ 04 марта 2020

Если проанализирован исходный код , то наблюдается, что при нажатии указанной вами кнопки вызывается метод enableAutoRange(), то есть этот метод должен использоваться:

from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import numpy as np

if __name__ == "__main__":

    app = QtGui.QApplication([])
    w = QtGui.QWidget()
    btn = QtGui.QPushButton("press me")
    text = QtGui.QLineEdit("enter text")
    listw = QtGui.QListWidget()
    plot = pg.PlotWidget()

    btn.clicked.connect(lambda: <b>plot.getPlotItem().enableAutoRange()</b>)

    layout = QtGui.QGridLayout()
    w.setLayout(layout)
    layout.addWidget(btn, 0, 0)
    layout.addWidget(text, 1, 0)
    layout.addWidget(listw, 2, 0)
    layout.addWidget(plot, 0, 1, 3, 1)

    x = np.random.normal(size=1000)
    y = np.random.normal(size=1000)
    plot.plot(x, y, pen=(2, 3), symbol="d")

    w.show()

    app.exec_()
...