Я хочу включить отслеживание мыши по фигуре (графику), однако отслеживание мыши работает только для области, НЕ ВКЛЮЧАЯ фигуру / холст.
Минимальный код для отображения проблемы:
class PlotWorstRegion(QtWidgets.QWidget):
def __init__(self, parent = MatplotlibWidget):
QtWidgets.QWidget.__init__(self, parent)
self.initUI()
def initUI(self):
self.canvas = FigureCanvas(Figure())
self.canvas.axes = self.canvas.figure.add_subplot(111)
grid = QtWidgets.QGridLayout()
x = 0
y = 0
self.text = "x: {0}, y: {1}".format(x, y)
self.label = QtWidgets.QLabel(self.text, self)
grid.addWidget(self.label,0,0)
grid.addWidget(self.canvas)
self.setGeometry(10, 240, 200, 300)
self.setWindowTitle('Event object')
self.setLayout(grid)
self.show()
self.setMouseTracking(True)
def mouseMoveEvent(self, e):
x = e.x()
y = e.y()
text = "x: {0}, y: {1}".format(x, y)
self.label.setText(text)
Когда я закомментирую grid.addWidget(self.canvas)
, это обеспечивает отслеживание в сетке, за исключением случаев, когда вы наводите указатель мыши над / вокруг виджета.Когда я добавляю self.label.setMouseTracking(True)
в InitUI, отслеживание включено везде в сетке.
ОДНАКО, когда я раскомментирую grid.add_widget(self.canvas)
И добавлю self.canvas.setMouseTracking(True)
, отслеживание «блокируется» полотном, а отслеживание включается только за пределами границ полотна.
Любоеочень хотелось бы получить помощь в отслеживании мыши и на холсте!