我是 python/pyside/pyqtgraph 的新手,我有点卡在我的程序中。
所以,我有一个代表 10000 个值的 numpy.ndarray,我使用 plot 方法将它绘制在 PlotWidget 中。结果还可以,但现在我想允许用户选择曲线的点,这样我就可以保存该点的 X 轴并在以后使用它。
我想做的是创建一个 QPushButton ,单击它时,它会等待用户通过左键单击选择曲线上的两个点,然后保存 X 轴。在概念上似乎很简单,但我没有找到这样做的好方法。如果你能给我一个例子或其他东西,我会非常高兴,我也愿意接受任何偏离这个用例的建议。
我可以通过以下几行恢复代码:
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)
我可能会使用您的缓冲策略来命令用户进行两个选择。但是,我仍然需要知道如何从我单击的位置获取 PlotWidget 的 X 轴。如果有人使用 pyqtgraph 知道答案,请告诉我。谢谢。