PyQt 鼠标事件在我的 CSS QLabel 上不起作用

PyQt Mouse Event doesn't work on my QLabel with CSS

我在编程时使用特定的字体。但是字体的行间距比较窄,所以我用CSS单独定义行间距。但这就是问题所在。鼠标事件不工作。这是什么原因,我该怎么办?

这是我的代码:

import sys
from PyQt5.QtWidgets import * 
from PyQt5 import QtCore

class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.label = QLabel(self)
        self.label.resize(200, 50)
        self.label.setStyleSheet("border: 1px solid black;")

        text = "Test mouse events on here"
        self.label.setText("<p style='line-height:1.15'>{}</p>".format(text))

    def mouseReleaseEvent(self, e):
        if e.button() == QtCore.Qt.LeftButton:
            print("Left")

        if e.button() == QtCore.Qt.RightButton:
            print("Right")

        if e.button() == 8: 
            print("Left side")

        if e.button() == 16: 
            print("Right side")

App = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(App.exec())

问题是因为当您放置富文本时,QLabel 消耗了鼠标事件,阻止它传播到父级。一种可能的解决方案是激活属性 Qt::WA_TransparentForMouseEvents:

self.label.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents, True)