PyQt: resizing detection in widget window resizing mode

I create a simple interface with Qt Designer and convert it to Python codes. I was looking for any method to detect window resizing.

This is the generated code:

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_()) 

I found a similar question QWidget resize signal? and this tutorial for handling size is recommended to override the resizeEvent method for QMainWindow.

But any of them does not solve my problem. Is there a resized function to determine the size of the window, as shown below:

 MainWindow.resized.connect(self.someFunction) 
+1
source share
1 answer

By default, this signal is absent, but you can create a resized signal, we emit it in the resizeEvent function.

Example:

 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_()) 
+7
source

Source: https://habr.com/ru/post/1201730/


All Articles