0

私は 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 を使用している人が答えを知っている場合は、お知らせください。ありがとう。

4

1 に答える 1