Событие мыши PyQt не работает на моей QLabel с помощью CSS

#python #pyqt5

Вопрос:

Я использую определенный шрифт при программировании. Но шрифт имеет узкий разрыв между строками, поэтому я использую 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("lt;p style='line-height:1.15'gt;{}lt;/pgt;".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())  

Ответ №1:

Проблема вызвана тем, что при размещении форматированного текста метка QL потребляет события мыши, предотвращающие его распространение на родителей. Возможным решением является активация атрибута Qt::WA_TransparentForMouseEvents:

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