#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)