У меня есть приложение Qt, где я рисую графики, используя pyqtgraph lib, и использую док-контейнеры также из pyqtgraph. Поэтому я создаю несколько док-контейнеров и помещаю по одному графику в каждый. Затем в моем коде мне нужно идентифицировать график, с которым пользователь работает, чтобы обновить некоторые другие сотрудники в приложении (например, чтобы показать некоторые свойства для «активного» графика в некоторых общих для всех виджетов).
Моя идея состоит в том, чтобы получить сигнал щелчка мыши и определить график, на котором он был нажат, чтобы узнать, с каким последним пользователем взаимодействовал график. Но классы pyqtgraph PlotWidget, PlotItem или ViewBox не предоставляют таких сигналов, и я не знаю, есть ли способ реализовать это самостоятельно. Кроме того, я не нашел способа определить, какой док-контейнер активен. Я вижу только sigMouseReleased для PlotWidget, но даже это не работает для меня (см. Код ниже)
Вот мой минимальный код:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
import pyqtgraph as pg
from pyqtgraph.dockarea import *
# I use Qt Designer, below I just cut generated code to minimum
class Ui_StartForm(object):
def setupUi(self, StartForm):
StartForm.setObjectName("StartForm")
StartForm.resize(1507, 968)
self.GraphLayout = QtWidgets.QGridLayout(StartForm)
# my application
class AppWindow(QtWidgets.QWidget, Ui_StartForm):
def __init__(self):
super(AppWindow, self).__init__()
self.setupUi(self)
self.dock_area_main = DockArea()
self.GraphLayout.addWidget(self.dock_area_main)
self.Dock1 = Dock("Dock 1", size=(1, 1))
self.dock_area_main.addDock(self.Dock1, 'left')
self.Dock2 = Dock("Dock 2", size=(1, 1))
self.dock_area_main.addDock(self.Dock2, 'right')
self.GraphViewList = []
self.pl1 = pg.PlotWidget()
self.pl2 = pg.PlotWidget()
self.Dock1.addWidget(self.pl1)
self.Dock2.addWidget(self.pl2)
self.pl1.sigMouseReleased.connect(self.mouse_release) # try to get some mouse event
def mouse_release(self):
print('click') # never execute
app = QtWidgets.QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())
Мой вопрос: как я могу реализовать сигналщелкнув мышью для pyqtgraph PlotItem или ViewBox, чтобы определить, какой граф последний раз взаимодействовал с пользователем. В то же время, он не должен влиять на функции графиков pyqtgraph (он должен нормально отлавливать все события мыши)
Если есть лучшая стратегия для этого - предложите