在画布上进行鼠标跟踪不起作用-PyQT

时间:2019-05-13 16:11:01

标签: python pyqt pyqt5

我想在图形(图)上启用鼠标跟踪,但是鼠标跟踪仅适用于不包含图形/画布的区域。

显示该问题的最低代码:

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)时,跟踪被画布“阻止”,并且仅在画布边界之外启用了跟踪。

对于将鼠标跟踪也应用于画布的任何帮助,将不胜感激!

0 个答案:

没有答案