【问题标题】:QStackedWidget messed up layout Qt PythonQStackedWidget 搞砸了布局 Qt Python
【发布时间】:2023-02-04 19:27:10
【问题描述】:

我有一个 Qt-App,它有一个 QStackedWidget 和几个页面,但页面上的布局搞砸了。

这是我的应用程序的示例:

import sys
from PySide6.QtCore import (QCoreApplication, QMetaObject)
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit, QMainWindow, QPushButton, QStackedWidget, QWidget)

class Ui_MainWindow(object):

    def setupUi(self, mainWindow):
        if not mainWindow.objectName(): mainWindow.setObjectName(u"mainWindow")
        mainWindow.resize(400, 400)
        self.centralWidget = QWidget(mainWindow)
        self.centralWidget.setObjectName(u"centralWidget")
        mainWindow.setCentralWidget(self.centralWidget)
        self.horizontal_layout_centralwidget = QHBoxLayout(self.centralWidget)
        self.horizontal_layout_centralwidget.setObjectName(u"horizontal_layout_centralwidget")
        self.stackedWidget_main = QStackedWidget(self.centralWidget)
        self.stackedWidget_main.setObjectName(u"stackedWidget_main")
        self.horizontal_layout_centralwidget.addWidget(self.stackedWidget_main)
        self.page_1 = QWidget()
        self.page_1.setObjectName(u"page_1")
        self.stackedWidget_main.addWidget(self.page_1)
        self.label_page_1 = QLabel(self.page_1)
        self.label_page_1.setObjectName(u"label_page_1")
        self.entry_page_1 = QLineEdit(self.page_1)
        self.entry_page_1.setObjectName(u"entry_page_1")
        self.horizontal_layout_page_1_top = QHBoxLayout(self.page_1)
        self.horizontal_layout_page_1_top.setObjectName(u"horizontal_layout_page_1")
        self.horizontal_layout_page_1_top.addWidget(self.label_page_1)
        self.horizontal_layout_page_1_top.addWidget(self.entry_page_1)
        self.button_page_1 = QPushButton(self.page_1)
        self.button_page_1.setObjectName(u"button_page_1")
        self.button2_page_1 = QPushButton(self.page_1)
        self.button2_page_1.setObjectName(u"button2_page_1")
        self.horizontal_layout_page_1_bottom = QHBoxLayout(self.page_1)
        self.horizontal_layout_page_1_bottom.setObjectName(u"horizontal_layout_page_1_buttons")
        self.horizontal_layout_page_1_bottom.addWidget(self.button_page_1)
        self.horizontal_layout_page_1_bottom.addWidget(self.button2_page_1)
        self.vertical_layout_page_1 = QVBoxLayout(self.page_1)
        self.vertical_layout_page_1.setObjectName(u"vertical_layout_page_1")
        self.vertical_layout_page_1.addLayout(self.horizontal_layout_page_1_top)
        self.vertical_layout_page_1.addLayout(self.horizontal_layout_page_1_bottom)
        self.retranslateUi(mainWindow)
        QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):
        mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"mainWindow", None))
        self.label_page_1.setText(QCoreApplication.translate("mainWindow", u"Label", None))
        self.entry_page_1.setText(QCoreApplication.translate("mainWindow", u"Entry", None))
        self.button_page_1.setText(QCoreApplication.translate("mainWindow", u"Button", None))
        self.button2_page_1.setText(QCoreApplication.translate("mainWindow", u"Button2", None))

运行图形用户界面:

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    MW = MainWindow()
    sys.exit(app.exec())

结果窗口如下所示:

布局混乱,按钮应位于标签/条目下方,第二个按钮堆叠在第一个按钮之上。

有人可以告诉我我做错了什么吗?

【问题讨论】:

    标签: python qt user-interface pyqt pyside


    【解决方案1】:

    我发现了错误。 解决方案是使用:

    self.horizontal_layout_page_1_top = QHBoxLayout()
    self.horizontal_layout_page_1_bottom = QHBoxLayout()
    

    代替:

    self.horizontal_layout_page_1_top = QHBoxLayout(self.page_1)
    self.horizontal_layout_page_1_bottom = QHBoxLayout(self.page_1)
    

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2018-07-19
      相关资源
      最近更新 更多