私は python/pyside/pyqtgraph が初めてで、プログラムに行き詰まっています。
したがって、10000 個の値を表す numpy.ndarray があり、plot メソッドを使用して PlotWidget にプロットします。結果は問題ありませんが、ポイントの X 軸を保存して後で使用できるように、ユーザーが曲線のポイントを選択できるようにしたいと考えています。
私がやりたいことは、クリックすると、ユーザーが左クリックして曲線上の 2 つの点を選択し、X 軸を保存するのを待つ QPushButton を作成することです。概念的にはかなり単純に思えますが、それを行う良い方法が見つかりません。例か何かを教えていただければ幸いです。この使用例から逸脱する提案も受け付けています。
次の行でコードを再開できます。
self.myWidget = pyqtgraph.PlotWidget()
self.myWidget.plot(myValues) # myValues is the numpy array
self.select2PointsButton = QtGui.QPushButton()
self.select2PointsButton.clicked.connect(self.waitForSelection)
def waitForSelection(self):
# Wait for a click left on the curve to select first point then save the X-axis
# Do it again to select the second point
ありがとう、モーガン
Zet4の回答後に編集:
ご回答ありがとうございます。最後に、 PlotWidget のサブクラスを作成しました。
class PltWidget(pg.PlotWidget):
def __init__(self, parent=None):
super(PltWidget, self).__init__(parent)
self.selectionMode = False
def mousePressEvent(self, ev):
if self.selectionMode:
if ev.button() == QtCore.Qt.LeftButton:
# How do I get the X axis ?
else:
super(PltWidget, self).mousePressEvent(ev)
次に、ウィンドウでそれを使用し、ボタン信号をスロットに接続して、 PltWidget のブール値を変更します。
..... # Other attributes and connections of my Window
self.T0Button = QtGui.QPushButton()
self.graphicsLeft = PltWidget()
self.T0Button.clicked.connect(self.selectT0)
def selectT0(self):
self.graphicsLeft.selectionMode = not(self.graphicsLeft.selectionMode)
おそらく、あなたのバッファ戦略を使用して、ユーザーに 2 つの選択を命令するでしょう。ただし、クリックした場所から PlotWidget の X 軸を取得する方法を知る必要があります。pyqtgraph を使用している人が答えを知っている場合は、お知らせください。ありがとう。