Я на самом деле разрабатываю небольшой софт, используя PyQt5 и QtDesigner, уже несколько недель.Я просмотрел много tutos и искал много ответов на SO, но не могу найти тот, который касается способа переопределения метода QWidget с помощью uic.loadUI ().
Обратите внимание, что я упростилстолько, сколько я мог в своем тестовом коде указать точно, где моя проблема:
1 / Этот не работает, он корректно загружает мой file.ui, но нажатие ничего не дает:
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QWidget
class Window(QWidget):
def __init__(self):
super().__init__() # Or QWidget.__init__(self)
self.dlg = uic.loadUi("file.ui")
self.dlg.show()
def mousePressEvent(self, event):
print("click !")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
app.exec_()
2 / Но я выяснил, что это на самом деле работает:
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle("My window")
self.show()
def mousePressEvent(self, event):
print("click !")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
app.exec_()
Так что, как я вижу, это потому, что я не могу переопределить метод события.Из-за того, что mousePressEvent не является методом, присоединенным к моему подклассу QWidget self.dlg
.
Теперь, когда я знаю почему, я хотел бы знать, как я могу переопределить метод mousePressEvent и использовать его.Я задавался вопросом о «загрузке» метода после его переопределения, или вызове метода QWidget для его переопределения, или просто создании собственного метода для перехвата любого события, но все, что я пытался полностью потерпеть неудачу.
Во всяком случае, спасибо взаранее за ваши ответы / советы / молитвы.