Не работает QGridLayout главного окна после конвертации из .ui в .py, как исправить?

Не работает QGridLayout главного окна после конвертации из .ui в .py, как исправить?

ссылка на .ui файл: https://drive.google.com/file/d/1dO7XXql5OPxL8mc-bUM_ZnjaNc34Ybm9/view?usp=sharing

  1. В Qt Designer все нормально отображается, динамически изменяется

введите сюда описание изображения

  1. После конвертации из .ui в .py, все находится в правом верхнем углу и никак не менятся

введите сюда описание изображения

  1. Код:

    from PyQt5 import QtCore, QtGui, QtWidgets
     from PyQt5.QtWidgets import QMainWindow
     import sys
    
     class Ui_Dialog(object):
         def setupUi(self, Dialog):
             Dialog.setObjectName("Dialog")
             Dialog.resize(569, 449)
             self.gridLayout_2 = QtWidgets.QGridLayout(Dialog)
             self.gridLayout_2.setObjectName("gridLayout_2")
             self.verticalLayout_2 = QtWidgets.QVBoxLayout()
             self.verticalLayout_2.setObjectName("verticalLayout_2")
             self.horizontalLayout = QtWidgets.QHBoxLayout()
             self.horizontalLayout.setObjectName("horizontalLayout")
             spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
             self.horizontalLayout.addItem(spacerItem)
             self.pushButton = QtWidgets.QPushButton(Dialog)
             self.pushButton.setObjectName("pushButton")
             self.horizontalLayout.addWidget(self.pushButton)
             spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
             self.horizontalLayout.addItem(spacerItem1)
             self.verticalLayout_2.addLayout(self.horizontalLayout)
             self.stackedWidget = QtWidgets.QStackedWidget(Dialog)
             self.stackedWidget.setObjectName("stackedWidget")
             self.page = QtWidgets.QWidget()
             self.page.setObjectName("page")
             self.gridLayout = QtWidgets.QGridLayout(self.page)
             self.gridLayout.setObjectName("gridLayout")
             self.verticalLayout = QtWidgets.QVBoxLayout()
             self.verticalLayout.setObjectName("verticalLayout")
             spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
             self.verticalLayout.addItem(spacerItem2)
             self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
             self.horizontalLayout_3.setObjectName("horizontalLayout_3")
             spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
             self.horizontalLayout_3.addItem(spacerItem3)
             self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
             self.horizontalLayout_2.setObjectName("horizontalLayout_2")
             self.pushButton_2 = QtWidgets.QPushButton(self.page)
             self.pushButton_2.setObjectName("pushButton_2")
             self.horizontalLayout_2.addWidget(self.pushButton_2)
             self.pushButton_3 = QtWidgets.QPushButton(self.page)
             self.pushButton_3.setObjectName("pushButton_3")
             self.horizontalLayout_2.addWidget(self.pushButton_3)
             self.horizontalLayout_3.addLayout(self.horizontalLayout_2)
             spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
             self.horizontalLayout_3.addItem(spacerItem4)
             self.verticalLayout.addLayout(self.horizontalLayout_3)
             spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
             self.verticalLayout.addItem(spacerItem5)
             self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
             self.stackedWidget.addWidget(self.page)
             self.page_2 = QtWidgets.QWidget()
             self.page_2.setObjectName("page_2")
             self.stackedWidget.addWidget(self.page_2)
             self.verticalLayout_2.addWidget(self.stackedWidget)
             self.gridLayout_2.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
    
             self.retranslateUi(Dialog)
             QtCore.QMetaObject.connectSlotsByName(Dialog)
    
             self.show()
    
         def retranslateUi(self, Dialog):
             _translate = QtCore.QCoreApplication.translate
             Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
             self.pushButton.setText(_translate("Dialog", "PushButton"))
             self.pushButton_2.setText(_translate("Dialog", "PushButton"))
             self.pushButton_3.setText(_translate("Dialog", "PushButton"))
    
    
     class MainWindow(QMainWindow, untitled.Ui_Dialog):
         def __init__(self):
             super().__init__()
             self.setupUi(self)
    
    
    
     if __name__ == '__main__':
         app = QtWidgets.QApplication(sys.argv)
         w = MainWindow()
         sys.exit(app.exec_())
    

Ответы (1 шт):

Автор решения: S. Nick

Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow
import sys

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(569, 449)
        self.gridLayout_2 = QtWidgets.QGridLayout(Dialog)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        self.stackedWidget = QtWidgets.QStackedWidget(Dialog)
        self.stackedWidget.setObjectName("stackedWidget")
        self.page = QtWidgets.QWidget()
        self.page.setObjectName("page")
        self.gridLayout = QtWidgets.QGridLayout(self.page)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem3)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButton_2 = QtWidgets.QPushButton(self.page)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.page)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout_2.addWidget(self.pushButton_3)
        self.horizontalLayout_3.addLayout(self.horizontalLayout_2)
        spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem4)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem5)
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
        self.stackedWidget.addWidget(self.page)
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setObjectName("page_2")
        self.stackedWidget.addWidget(self.page_2)
        self.verticalLayout_2.addWidget(self.stackedWidget)
        self.gridLayout_2.addLayout(self.verticalLayout_2, 0, 0, 1, 1)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

#        self.show()

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "PushButton"))
        self.pushButton_2.setText(_translate("Dialog", "PushButton"))
        self.pushButton_3.setText(_translate("Dialog", "PushButton"))


#class MainWindow(QMainWindow, untitled.Ui_Dialog):
class MainWindow(QtWidgets.QDialog, Ui_Dialog):
    def __init__(self):
        super().__init__()
        self.setupUi(self)



if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка