Как переопределить метод?
Как переопределить метод при использовании 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_ ())
