カスタム PlotDataItem を設定して、mouseDragEvents を受け取ります。この回答を自分のニーズに合わせて調整しました。今のところ、単純な setData をイベントに追加して、それが機能しているかどうかを確認しました。カスタム PlotDataItem は次のとおりです。
class CustomPlotItem(pg.PlotDataItem):
def __init__(self, *args, **kargs):
super().__init__(*args, **kargs)
def setParentItem(self, parent):
super().setParentItem(parent)
self.parentBox = self.parentItem().parentItem()
def mouseDragEvent(self, ev):
if ev.button() != QtCore.Qt.LeftButton:
ev.ignore()
return
if ev.isStart():
if self.parentBox.curveDragged != None or not self.mouseShape().contains(ev.pos()):
ev.ignore()
return
self.parentBox.curveDragged = self
elif ev.isFinish():
self.parentBox.curveDragged = None
return
elif self.parentBox.curveDragged != self:
ev.ignore()
return
self.setData([40,50,60,200],[20,50,80,500])
ev.accept()
PlotDataItem は、 curveDraggedを実装するカスタム ViewBox に追加されるため、どの曲線がドラッグされているかがわかります。また、デバッグ目的で ViewBox の mouseDragEvents を無効にしました。
ただし、ViewBox で線をドラッグしようとすると、何も起こりません。また、mouseDragEvent の先頭に例外を追加しても、何も起こりません。これにより、 mouseDragEvent がまったく呼び出されていないと思います。
Python 3.3 (Anaconda Distribution) と pyqtgraph の開発バージョン (0.9.9) を使用しています。
誰かがこれで私を助けてくれることを願っています:)。前もって感謝します。