2014-12-01 1 views
0

Я использую PyQt и PyQtGraph для создания относительно простого графического интерфейса. В рамках этого у меня есть графический вид (графический графический файл pyqtgraph), в котором PlotItems динамически добавляется к нему пользователем.PyQt mousePressEvent - получить объект, на который было нажато?

То, что я пытаюсь достичь, позволяет пользователю выбрать PlotItem, дважды щелкнув по нему.

Это достаточно просто, если пользователь дважды щелкнул где-то в окне виджета, но я не могу понять, как вернуть то, на что было нажато.

Большинство моих результатов поиска придумали попытку переопределить mousePressEvent для определенных кнопок. Я немного читал о фильтрах событий, но я не уверен, что это необходимое решение здесь.

Я не уверен, что другая информация может быть полезной для ответа на этот вопрос, поэтому, если неясно, что я прошу, дайте мне знать, чтобы я мог уточнить.

Edit:

Дубликат этого:

pyqtgraph: When I click on a PlotItem how do I know which item has been clicked

+0

Достаточно хорошо, чтобы иметь х, у позиции щелчка мыши? – 101

+0

Это может работать в сочетании с widgetAt() – user3014097

+0

Я не уверен, что это действительно сработает. Я просто возвращаю общий виджет, тогда как мне нужно возразить, что встроено в виджет – user3014097

ответ

3

Одна стратегия заключается в подключении к 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) 
+0

Perfect! Спасибо. Поиск GraphicsScene.sigMouseClicked приводит меня к тому же идентичному вопросу со стороны другого пользователя в стеке. – user3014097

+0

Функция 'items' сцены, кажется, рассматривает' boundingRect' кривых вместо их фактического пути, чтобы определить, какие элементы возвращаться на основе позиции. Есть ли известное лекарство от этого? – architectonic

+0

В документах Qt предлагается аргумент 'mode', который определяет, как выбираются элементы: http://doc.qt.io/qt-4.8/qgraphicsscene.html#items-3 – Luke

Смежные вопросы