PyQt mousePressEvent - 获取被点击的对象?

dan*_*n_g 0 python pyqt pyqtgraph qmouseevent

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

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

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

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

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

编辑:

复制本:

pyqtgraph:当我点击一个 PlotItem 时,我怎么知道哪个项目被点击了

Luk*_*uke 5

一种策略是连接到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)
Run Code Online (Sandbox Code Playgroud)