在运行python代码时,Qt设计器中创建的ui看起来并不相同

问题描述 投票:0回答:1

我在Qt设计器中创建了一个ui,并将.ui文件转换为.py文件。但是,当我运行python代码时,在运行代码时,ui与设计器中的外观不同。我不明白为什么会发生这种情况,因为我可以看到代码中的所有元素?


from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_FirstWindow(object):
    def setupUi(self, FirstWindow):
        FirstWindow.setObjectName("FirstWindow")
        FirstWindow.resize(400, 300)
        self.centralWidget = QtWidgets.QWidget(FirstWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.welcomelabel = QtWidgets.QLabel(self.centralWidget)
        self.welcomelabel.setGeometry(QtCore.QRect(90, 10, 211, 20))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.welcomelabel.setFont(font)
        self.welcomelabel.setAlignment(QtCore.Qt.AlignCenter)
        self.welcomelabel.setObjectName("welcomelabel")
        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 120, 80, 16))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(290, 120, 80, 16))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_3.setGeometry(QtCore.QRect(10, 120, 80, 16))
        self.pushButton_3.setObjectName("pushButton_3")
        self.layoutWidget = QtWidgets.QWidget(self.centralWidget)
        self.layoutWidget.setGeometry(QtCore.QRect(50, 50, 168, 54))
        self.layoutWidget.setObjectName("layoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
        self.verticalLayout.setContentsMargins(11, 11, 11, 11)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
        self.horizontalLayout.setSpacing(16)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.rowcountlabel = QtWidgets.QLabel(self.layoutWidget)
        self.rowcountlabel.setObjectName("rowcountlabel")
        self.horizontalLayout.addWidget(self.rowcountlabel)
        self.rowcounentry = QtWidgets.QLineEdit(self.layoutWidget)
        self.rowcounentry.setObjectName("rowcounentry")
        self.horizontalLayout.addWidget(self.rowcounentry)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11)
        self.horizontalLayout_2.setSpacing(6)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.columncountlabel = QtWidgets.QLabel(self.layoutWidget)
        self.columncountlabel.setObjectName("columncountlabel")
        self.horizontalLayout_2.addWidget(self.columncountlabel)
        self.ColumnNOentry = QtWidgets.QLineEdit(self.layoutWidget)
        self.ColumnNOentry.setObjectName("ColumnNOentry")
        self.horizontalLayout_2.addWidget(self.ColumnNOentry)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        FirstWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(FirstWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 17))
        self.menuBar.setObjectName("menuBar")
        FirstWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtWidgets.QToolBar(FirstWindow)
        self.mainToolBar.setObjectName("mainToolBar")
        FirstWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtWidgets.QStatusBar(FirstWindow)
        self.statusBar.setObjectName("statusBar")
        FirstWindow.setStatusBar(self.statusBar)

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

    def retranslateUi(self, FirstWindow):
        _translate = QtCore.QCoreApplication.translate
        FirstWindow.setWindowTitle(_translate("FirstWindow", "FirstWindow"))
        self.welcomelabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">Welcome to the Data Generator</span></p></body></html>"))
        self.pushButton.setText(_translate("FirstWindow", "Continue"))
        self.pushButton_2.setText(_translate("FirstWindow", "Exit"))
        self.pushButton_3.setText(_translate("FirstWindow", "Instructions"))
        self.rowcountlabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-weight:600;\">How Many Rows? </span></p></body></html>"))
        self.columncountlabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-weight:600;\">How Many Columns? </span></p></body></html>"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    FirstWindow = QtWidgets.QMainWindow()
    ui = Ui_FirstWindow()
    ui.setupUi(FirstWindow)

    FirstWindow.show()
    sys.exit(app.exec_())

我期待这个:

enter image description here

但它看起来像这样:

enter image description here

python python-3.x pyqt pyqt5 qt-designer
1个回答
0
投票

出于某种原因,您没有将所有小部件放在中央小部件中?遗憾的是,我无法看到你想得到什么结果。试试吧:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_FirstWindow(object):
    def setupUi(self, FirstWindow):
        FirstWindow.setObjectName("FirstWindow")
        FirstWindow.resize(400, 300)
        self.centralWidget = QtWidgets.QWidget(FirstWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.welcomelabel = QtWidgets.QLabel(self.centralWidget)
        self.welcomelabel.setGeometry(QtCore.QRect(90, 10, 211, 20))    
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.welcomelabel.setFont(font)
        self.welcomelabel.setAlignment(QtCore.Qt.AlignCenter)
        self.welcomelabel.setObjectName("welcomelabel")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 120, 80, 16))  
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2.setGeometry(QtCore.QRect(290, 120, 80, 16))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_3.setGeometry(QtCore.QRect(10, 120, 80, 16))
        self.pushButton_3.setObjectName("pushButton_3")

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv       
        self.hLayout = QtWidgets.QHBoxLayout()
        self.hLayout.setContentsMargins(11, 11, 11, 11)
        self.hLayout.setSpacing(6)
        self.hLayout.setObjectName("hLayout")  
        self.hLayout.addWidget(self.pushButton_3)
        self.hLayout.addWidget(self.pushButton)
        self.hLayout.addWidget(self.pushButton_2)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        

        self.layoutWidget = QtWidgets.QWidget(self.centralWidget)
        self.layoutWidget.setGeometry(QtCore.QRect(50, 50, 168, 54))
        self.layoutWidget.setObjectName("layoutWidget")

#        self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralWidget)       # +++

        self.verticalLayout.setContentsMargins(11, 11, 11, 11)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")

        self.verticalLayout.addWidget(self.welcomelabel)                      # +++

        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
        self.horizontalLayout.setSpacing(16)
        self.horizontalLayout.setObjectName("horizontalLayout")

        self.rowcountlabel = QtWidgets.QLabel(self.layoutWidget)
        self.rowcountlabel.setObjectName("rowcountlabel")
        self.horizontalLayout.addWidget(self.rowcountlabel)
        self.rowcounentry = QtWidgets.QLineEdit(self.layoutWidget)
        self.rowcounentry.setObjectName("rowcounentry")
        self.horizontalLayout.addWidget(self.rowcounentry)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11)
        self.horizontalLayout_2.setSpacing(6)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.columncountlabel = QtWidgets.QLabel(self.layoutWidget)
        self.columncountlabel.setObjectName("columncountlabel")
        self.horizontalLayout_2.addWidget(self.columncountlabel)
        self.ColumnNOentry = QtWidgets.QLineEdit(self.layoutWidget)
        self.ColumnNOentry.setObjectName("ColumnNOentry")
        self.horizontalLayout_2.addWidget(self.ColumnNOentry)
        self.verticalLayout.addLayout(self.horizontalLayout_2)

        self.verticalLayout.addLayout(self.hLayout)                          # +++

        FirstWindow.setCentralWidget(self.centralWidget)

        self.menuBar = QtWidgets.QMenuBar(FirstWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 17))
        self.menuBar.setObjectName("menuBar")
        FirstWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtWidgets.QToolBar(FirstWindow)
        self.mainToolBar.setObjectName("mainToolBar")
        FirstWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtWidgets.QStatusBar(FirstWindow)
        self.statusBar.setObjectName("statusBar")
        FirstWindow.setStatusBar(self.statusBar)

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

    def retranslateUi(self, FirstWindow):
        _translate = QtCore.QCoreApplication.translate
        FirstWindow.setWindowTitle(_translate("FirstWindow", "FirstWindow"))
        self.welcomelabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">Welcome to the Data Generator</span></p></body></html>"))
        self.pushButton.setText(_translate("FirstWindow", "Continue"))
        self.pushButton_2.setText(_translate("FirstWindow", "Exit"))
        self.pushButton_3.setText(_translate("FirstWindow", "Instructions"))
        self.rowcountlabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-weight:600;\">How  Many  Rows ?    </span></p></body></html>"))
        self.columncountlabel.setText(_translate("FirstWindow", "<html><head/><body><p><span style=\" font-weight:600;\">How Many Columns? </span></p></body></html>"))


class Main(QtWidgets.QMainWindow, Ui_FirstWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    spinbox = Main()
    spinbox.show()
    sys.exit(app.exec_())

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.