0

我正在使用 PyQt 和 PyQtGraph 构建一个相对简单的绘图 UI。作为其中的一部分,我有一个图形视图(pyqtgraph 的 graphicslayoutwidget),其中有用户动态添加的 PlotItems。

我想要实现的是允许用户通过双击它来选择一个 PlotItem。

如果用户在小部件窗口中双击某处,这很简单,但我似乎无法弄清楚如何返回单击的内容。

我的大部分搜索结果都试图为某些按钮重新实现 mousePressEvent。我已经阅读了一些有关事件过滤器的信息,但我不确定这是否是必要的解决方案。

我不确定还有哪些其他信息可能有助于回答这个问题,所以如果不清楚我在问什么,请告诉我,以便我澄清。

编辑:

这个的副本:

pyqtgraph:当我单击 PlotItem 时,我如何知道单击了哪个项目

4

2 回答 2

7

一种策略是连接到GraphicsScene.sigMouseClicked场景然后询问鼠标光标下的项目。

这应该会让你部分地到达那里:

import pyqtgraph as pg

w = pg.GraphicsWindow()
for i in range(4):
    w.addPlot(0, i)

def onClick(event):
    items = w.scene().items(event.scenePos())
    print "Plots:", [x for x in items if isinstance(x, pg.PlotItem)]

w.scene().sigMouseClicked.connect(onClick)
于 2014-12-01T15:59:24.043 回答
0

一个非常直接的替代方法是使用 lambda 函数:

q_label = QLabel("MyLabel)
q_label.mousePressEvent = lambda e: on_name_clicked(q_label)


def on_name_clicked(self, q_label):
    print(q_label.text())
于 2021-06-25T08:46:42.497 回答