Как переопределить метод?

Как переопределить метод при использовании QUiLoader ().load ("name.ui")

from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import *
class form():
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.ui=QUiLoader ().load ("form.ui")
        self.ui.paintEvent=self.func #При таком переопределении метод paintEvent не срабатывает
        self.ui.show()
    def func(self,qp):
        print('tut ya')
if __name__ == "__main__":
    import sys
    app = QApplication (sys.argv)
    wform = form ()
    sys.exit (app.exec_ ())

Ответы (1 шт):

Автор решения: S. Nick

Операции рисования обычно выполняются в функции события paintEvent(). Для того чтобы переопределить метод paintEvent вам нужно прописать его в классе и заполнить нужным функционалом.

В PyQt5 это может выглядеть так (см.пример ниже). Кликаем кнопку 'Click me' и наблюдаем что происходит.

'''
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import *
'''
from PyQt5.Qt import *
from PyQt5 import uic            #   from PySide2.QtUiTools import QUiLoader


class Form(QWidget):                                    # + QWidget
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
#        self.ui = QUiLoader().load("form.ui")          # PySide2
        uic.loadUi("form.ui", self)             # PyQt5 
        
        self.pushButton.setText('Click me')
        self.pushButton.setCheckable(True)  
        self.pushButton.setChecked(False)   
        self.pushButton.clicked.connect(self.update)        
        
    def paintEvent(self, event):
        print('tut ya')
        
        painter = QPainter(self)
        painter.setFont(QFont('Times New Roman', 30))
        painter.drawText(100, 100, 'Hello PyQt5!')        
        
        if self.pushButton.isChecked():
            painter.setFont(QFont('Times New Roman', 15))
            painter.drawText(100, 200, "Кнопка 'Click me' нажата")          
        
        
if __name__ == "__main__":
    import sys
    app = QApplication (sys.argv)
    wform = Form()
    wform.show()
    sys.exit (app.exec_ ())

введите сюда описание изображения

→ Ссылка