Код: Выделить всё
import sys
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication
class TestWidget(QWidget):
def __init__(self):
super().__init__()
def __getattribute__(self, name):
print('__getattribute__ called. The attribute is named', name)
return object.__getattribute__(self, name)
def sizeHint(self):
print('sizeHint called')
return QSize(400, 400)
class MyApplication(QMainWindow):
def __init__(self):
super().__init__()
w = TestWidget()
self.setCentralWidget(w)
self.show()
app = QApplication(sys.argv)
window = MyApplication()
sys.exit(app.exec_())
Код: Выделить всё
sizeHint called
Я считаю, что есть несколько других вызовов методов, производных от QWidget, которые здесь не перехватываются. Как их лучше выявить?
К сожалению, существует очень много методов, унаследованных от QWidget. Если бы их было всего несколько, я бы просто переопределил их вручную и добавил оператор печати, чтобы указать, что они были вызваны, но здесь это выглядит невозможным.
Спасибо за любую помощь! Я делаю это, чтобы лучше понять, как работает PyQt5, но в целом мне кажется полезным знать, как это делать, когда изучаешь работу любого пакета.
Подробнее здесь: https://stackoverflow.com/questions/793 ... etattribut