![]() |
[PyQt] Can't get MDIarea to resize automatically with Main Window - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [PyQt] Can't get MDIarea to resize automatically with Main Window (/thread-34466.html) |
Can't get MDIarea to resize automatically with Main Window - JayCee - Aug-02-2021 Hello, everyone! Greetings from Brazil. I’m new to Python and developing an app with Qt Designer / PyCharm / PyQt5. The issue is that I can’t get the MDIarea to resize automatically inside the main window. Any ideas on how to do that? Here is the original code generated by Qt Designer: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'bremington-mdi.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setWindowModality(QtCore.Qt.WindowModal) MainWindow.resize(781, 478) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.mdiArea = QtWidgets.QMdiArea(self.centralwidget) self.mdiArea.setGeometry(QtCore.QRect(0, 0, 600, 400)) self.mdiArea.setAutoFillBackground(True) self.mdiArea.setObjectName("mdiArea") self.subWindowUsers = QtWidgets.QWidget() self.subWindowUsers.setMinimumSize(QtCore.QSize(466, 267)) self.subWindowUsers.setObjectName("subWindowUsers") self.pushButton_save_2 = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_save_2.setGeometry(QtCore.QRect(330, 220, 75, 23)) self.pushButton_save_2.setObjectName("pushButton_save_2") self.pushButton_previous = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_previous.setGeometry(QtCore.QRect(150, 190, 75, 23)) self.pushButton_previous.setObjectName("pushButton_previous") self.lineEdit_date = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_date.setGeometry(QtCore.QRect(110, 50, 91, 20)) self.lineEdit_date.setObjectName("lineEdit_date") self.pushButton_edit = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_edit.setGeometry(QtCore.QRect(150, 220, 75, 23)) self.pushButton_edit.setObjectName("pushButton_edit") self.pushButton_update = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_update.setGeometry(QtCore.QRect(240, 220, 75, 23)) self.pushButton_update.setObjectName("pushButton_update") self.pushButton_next = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_next.setGeometry(QtCore.QRect(240, 190, 75, 23)) self.pushButton_next.setObjectName("pushButton_next") self.pushButton_first = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_first.setGeometry(QtCore.QRect(60, 190, 75, 23)) self.pushButton_first.setObjectName("pushButton_first") self.pushButton_last = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_last.setGeometry(QtCore.QRect(330, 190, 75, 23)) self.pushButton_last.setObjectName("pushButton_last") self.pushButton_add = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_add.setGeometry(QtCore.QRect(60, 220, 75, 23)) self.pushButton_add.setObjectName("pushButton_add") self.pushButton_cancel = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_cancel.setGeometry(QtCore.QRect(240, 220, 75, 23)) self.pushButton_cancel.setObjectName("pushButton_cancel") self.lineEdit_login = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_login.setGeometry(QtCore.QRect(110, 110, 171, 20)) self.lineEdit_login.setObjectName("lineEdit_login") self.lineEdit_name = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_name.setGeometry(QtCore.QRect(110, 80, 271, 20)) self.lineEdit_name.setObjectName("lineEdit_name") self.pushButton_save = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_save.setGeometry(QtCore.QRect(330, 220, 75, 23)) self.pushButton_save.setObjectName("pushButton_save") self.lineEdit_number = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_number.setGeometry(QtCore.QRect(110, 20, 61, 20)) self.lineEdit_number.setObjectName("lineEdit_number") self.lineEdit_pwd = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_pwd.setGeometry(QtCore.QRect(110, 140, 113, 20)) self.lineEdit_pwd.setObjectName("lineEdit_pwd") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 781, 21)) self.menubar.setObjectName("menubar") self.menuUsers = QtWidgets.QMenu(self.menubar) self.menuUsers.setObjectName("menuUsers") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.actionFile_usuarios = QtWidgets.QAction(MainWindow) self.actionFile_usuarios.setObjectName("actionFile_usuarios") self.menuUsers.addAction(self.actionFile_usuarios) self.menubar.addAction(self.menuUsers.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.actionFile_usuarios.triggered.connect(lambda: self.OpenUserForm("Usuários")) self.pushButton_cancel.hide() self.pushButton_save.hide() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Bremington")) self.subWindowUsers.setWindowTitle(_translate("MainWindow", "Subwindow")) self.pushButton_save_2.setText(_translate("MainWindow", "Delete")) self.pushButton_previous.setText(_translate("MainWindow", "< Previous")) self.pushButton_edit.setText(_translate("MainWindow", "Edit")) self.pushButton_update.setText(_translate("MainWindow", "Update")) self.pushButton_next.setText(_translate("MainWindow", "Next >")) self.pushButton_first.setText(_translate("MainWindow", "<< First")) self.pushButton_last.setText(_translate("MainWindow", "Last >>")) self.pushButton_add.setText(_translate("MainWindow", "New user")) self.pushButton_cancel.setText(_translate("MainWindow", "Cancel")) self.pushButton_save.setText(_translate("MainWindow", "Save")) self.menuUsers.setTitle(_translate("MainWindow", "Arquivos")) self.actionFile_usuarios.setText(_translate("MainWindow", "Usuários")) def OpenUserForm(self, text): self.mdiArea.addSubWindow(ui.subWindowUsers) ui.subWindowUsers.setWindowTitle(text) ui.subWindowUsers.show() 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_())Thanks a lot for your time and help. I really appreciate it! Best regards, ![]() RE: Can't get MDIarea to resize automatically with Main Window - Axel_Erfurt - Aug-02-2021 You are using QtDesigner, thats the problem. Better use a Layout. RE: Can't get MDIarea to resize automatically with Main Window - deanhystad - Aug-02-2021 Whenever you see this you will have a problem if your application window is resizeable setGeometry(QtCore.QRect(150, 220, 75, 23))A resizeable window should not contain any setGeometry calls. To get your layout to resize nicely you need to use Layouts (Vertical Layout, Horizontal Layout, Grid Layout, Form Layout). These will grow and shrink when the window grows and shrinks and they will do their best to adjust the widgets to fit. RE: Can't get MDIarea to resize automatically with Main Window - Axel_Erfurt - Aug-02-2021 read this before you next use QtDesigner. https://doc.qt.io/qt-5/designer-layouts.html Try that for now from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setWindowModality(QtCore.Qt.WindowModal) MainWindow.resize(781, 478) self.mdiArea = QtWidgets.QMdiArea() self.mdiArea.setGeometry(0, 0, 600, 400) self.mdiArea.setAutoFillBackground(True) self.mdiArea.setObjectName("mdiArea") self.subWindowUsers = QtWidgets.QWidget() self.subWindowUsers.setMinimumSize(QtCore.QSize(466, 267)) self.subWindowUsers.setObjectName("subWindowUsers") self.pushButton_save_2 = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_save_2.setGeometry(QtCore.QRect(330, 220, 75, 23)) self.pushButton_save_2.setObjectName("pushButton_save_2") self.pushButton_previous = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_previous.setGeometry(QtCore.QRect(150, 190, 75, 23)) self.pushButton_previous.setObjectName("pushButton_previous") self.lineEdit_date = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_date.setGeometry(QtCore.QRect(110, 50, 91, 20)) self.lineEdit_date.setObjectName("lineEdit_date") self.pushButton_edit = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_edit.setGeometry(QtCore.QRect(150, 220, 75, 23)) self.pushButton_edit.setObjectName("pushButton_edit") self.pushButton_update = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_update.setGeometry(QtCore.QRect(240, 220, 75, 23)) self.pushButton_update.setObjectName("pushButton_update") self.pushButton_next = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_next.setGeometry(QtCore.QRect(240, 190, 75, 23)) self.pushButton_next.setObjectName("pushButton_next") self.pushButton_first = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_first.setGeometry(QtCore.QRect(60, 190, 75, 23)) self.pushButton_first.setObjectName("pushButton_first") self.pushButton_last = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_last.setGeometry(QtCore.QRect(330, 190, 75, 23)) self.pushButton_last.setObjectName("pushButton_last") self.pushButton_add = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_add.setGeometry(QtCore.QRect(60, 220, 75, 23)) self.pushButton_add.setObjectName("pushButton_add") self.pushButton_cancel = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_cancel.setGeometry(QtCore.QRect(240, 220, 75, 23)) self.pushButton_cancel.setObjectName("pushButton_cancel") self.lineEdit_login = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_login.setGeometry(QtCore.QRect(110, 110, 171, 20)) self.lineEdit_login.setObjectName("lineEdit_login") self.lineEdit_name = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_name.setGeometry(QtCore.QRect(110, 80, 271, 20)) self.lineEdit_name.setObjectName("lineEdit_name") self.pushButton_save = QtWidgets.QPushButton(self.subWindowUsers) self.pushButton_save.setGeometry(QtCore.QRect(330, 220, 75, 23)) self.pushButton_save.setObjectName("pushButton_save") self.lineEdit_number = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_number.setGeometry(QtCore.QRect(110, 20, 61, 20)) self.lineEdit_number.setObjectName("lineEdit_number") self.lineEdit_pwd = QtWidgets.QLineEdit(self.subWindowUsers) self.lineEdit_pwd.setGeometry(QtCore.QRect(110, 140, 113, 20)) self.lineEdit_pwd.setObjectName("lineEdit_pwd") MainWindow.setCentralWidget(self.mdiArea) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 781, 21)) self.menubar.setObjectName("menubar") self.menuUsers = QtWidgets.QMenu(self.menubar) self.menuUsers.setObjectName("menuUsers") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.actionFile_usuarios = QtWidgets.QAction(MainWindow) self.actionFile_usuarios.setObjectName("actionFile_usuarios") self.menuUsers.addAction(self.actionFile_usuarios) self.menubar.addAction(self.menuUsers.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.actionFile_usuarios.triggered.connect(lambda: self.OpenUserForm("Usuários")) self.pushButton_cancel.hide() self.pushButton_save.hide() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Bremington")) self.subWindowUsers.setWindowTitle(_translate("MainWindow", "Subwindow")) self.pushButton_save_2.setText(_translate("MainWindow", "Delete")) self.pushButton_previous.setText(_translate("MainWindow", "< Previous")) self.pushButton_edit.setText(_translate("MainWindow", "Edit")) self.pushButton_update.setText(_translate("MainWindow", "Update")) self.pushButton_next.setText(_translate("MainWindow", "Next >")) self.pushButton_first.setText(_translate("MainWindow", "<< First")) self.pushButton_last.setText(_translate("MainWindow", "Last >>")) self.pushButton_add.setText(_translate("MainWindow", "New user")) self.pushButton_cancel.setText(_translate("MainWindow", "Cancel")) self.pushButton_save.setText(_translate("MainWindow", "Save")) self.menuUsers.setTitle(_translate("MainWindow", "Arquivos")) self.actionFile_usuarios.setText(_translate("MainWindow", "Usuários")) def OpenUserForm(self, text): self.mdiArea.addSubWindow(ui.subWindowUsers) ui.subWindowUsers.setWindowTitle(text) ui.subWindowUsers.show() 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_()) RE: Can't get MDIarea to resize automatically with Main Window - JayCee - Aug-02-2021 Hi, Axel. Your code worked perfectly. Danke schön! I appreciate your time and prompt help. ![]() Hi, Dean. Thanks a lot for your feedback! |