我想在图形(图)上启用鼠标跟踪,但是鼠标跟踪仅适用于不包含图形/画布的区域。
显示该问题的最低代码:
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)
时,这会在网格中提供跟踪,除非将鼠标悬停在标签窗口小部件上方/周围。
当我在InitUI中添加self.label.setMouseTracking(True)
时,将对网格中的所有位置启用跟踪。
但是,当我取消注释grid.add_widget(self.canvas)
并添加self.canvas.setMouseTracking(True)
时,跟踪被画布“阻止”,并且仅在画布边界之外启用了跟踪。
对于将鼠标跟踪也应用于画布的任何帮助,将不胜感激!