PyQt: Detecta el cambio de tamaño en la señal de cambio de tamaño de la ventana del widget

Creo una interfaz de usuario simple con Qt Designer y la convierto a códigos Python. Busqué cualquier método para detectar el cambio de tamaño de la ventana.

Este es el código generado:

from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def onResize(event): print(event) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setWindowTitle("MainWindow") MainWindow.resize(200, 200) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) MainWindow.resized.connect(self.someFunction) QtCore.QMetaObject.connectSlotsByName(MainWindow) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) 

He encontrado una pregunta similar QWidget cambiar el tamaño de la señal? y este tutorial para manejar el tamaño que recomendó reemplazar el método resizeEvent de QMainWindow .

Pero ninguno de ellos resuelve mi problema. ¿Hay alguna función redimensionada para detectar el cambio de tamaño de la ventana como a continuación:

 MainWindow.resized.connect(self.someFunction) 

    No hay tal señal por defecto, pero puede crear la señal resized , la emitimos en la función resizeEvent .

    Por ejemplo:

     from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setWindowTitle("MainWindow") MainWindow.resize(200, 200) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) QtCore.QMetaObject.connectSlotsByName(MainWindow) class Window(QtWidgets.QMainWindow): resized = QtCore.pyqtSignal() def __init__(self, parent=None): super(Window, self).__init__(parent=parent) ui = Ui_MainWindow() ui.setupUi(self) self.resized.connect(self.someFunction) def resizeEvent(self, event): self.resized.emit() return super(Window, self).resizeEvent(event) def someFunction(self): print("someFunction") if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = Window() w.show() sys.exit(app.exec_())