Python pyside显示/隐藏布局

Python pyside显示/隐藏布局,python,layout,hide,show,pyside,Python,Layout,Hide,Show,Pyside,我试图显示两种布局中的一种,这取决于是否选中复选框 只有使用小部件,我才能完成以下工作: (本例中的每个小部件都是QLineEdit) 但是,由于我想为每个QLineEdit添加一个描述性标签,因此我需要在某种布局或容器中组合QLineEdit+QLabel。 我一直在尝试addlayout/RemovelLayout/removeItem在布局而不是小部件上执行上述操作,但无法使其正常工作。程序在我最后一次尝试时崩溃了 在两种布局之间切换的最简单方法是什么?它不必使用复选框,但我更喜欢这样 将

我试图显示两种布局中的一种,这取决于是否选中复选框

只有使用小部件,我才能完成以下工作: (本例中的每个小部件都是QLineEdit)

但是,由于我想为每个QLineEdit添加一个描述性标签,因此我需要在某种布局或容器中组合QLineEdit+QLabel。 我一直在尝试addlayout/RemovelLayout/removeItem在布局而不是小部件上执行上述操作,但无法使其正常工作。程序在我最后一次尝试时崩溃了


在两种布局之间切换的最简单方法是什么?它不必使用复选框,但我更喜欢这样

将布局放入单独的小部件中。现在你“只使用小部件”

下面是一个例子:

from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        self.layout=QVBoxLayout()
        self.setLayout(self.layout)


        self.checkbox=QCheckBox("Layouts")
        self.layout.addWidget(self.checkbox)


        self.widget1=QWidget()
        self.layout.addWidget(self.widget1)

        self.layout1=QVBoxLayout()
        self.widget1.setLayout(self.layout1)

        self.layout1.addWidget(QLabel("First layout"))

        self.layout1.addWidget(QTextEdit())


        self.widget2=QWidget()
        self.layout.addWidget(self.widget2)

        self.layout2=QHBoxLayout()
        self.widget2.setLayout(self.layout2)

        self.layout2.addWidget(QTextEdit("Second layout"))

        self.layout2.addWidget(QTextEdit())


        self.checkbox.toggled.connect(self.checkbox_toggled)
        self.checkbox.toggle()

        self.show()

    def checkbox_toggled(self, state):
        self.widget1.setVisible(state)
        self.widget2.setVisible(not state)

app=QApplication([])
mw=MainWindow()
app.exec_()

运行它看看它是如何工作的。

我应该写“只使用小部件”。我可以在什么样的小部件中放置布局?我认为小部件进入布局,而不是相反。你可以将布局放入大多数小部件中。通常使用
QWidget
QFrame
。我来举个例子。
from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        self.layout=QVBoxLayout()
        self.setLayout(self.layout)


        self.checkbox=QCheckBox("Layouts")
        self.layout.addWidget(self.checkbox)


        self.widget1=QWidget()
        self.layout.addWidget(self.widget1)

        self.layout1=QVBoxLayout()
        self.widget1.setLayout(self.layout1)

        self.layout1.addWidget(QLabel("First layout"))

        self.layout1.addWidget(QTextEdit())


        self.widget2=QWidget()
        self.layout.addWidget(self.widget2)

        self.layout2=QHBoxLayout()
        self.widget2.setLayout(self.layout2)

        self.layout2.addWidget(QTextEdit("Second layout"))

        self.layout2.addWidget(QTextEdit())


        self.checkbox.toggled.connect(self.checkbox_toggled)
        self.checkbox.toggle()

        self.show()

    def checkbox_toggled(self, state):
        self.widget1.setVisible(state)
        self.widget2.setVisible(not state)

app=QApplication([])
mw=MainWindow()
app.exec_()