Qt Pyside更改布局

Qt Pyside更改布局,qt,pyside,Qt,Pyside,我有一个界面,屏幕顶部有4个按钮,下面有QFrame。我想根据按下的按钮更改QFrame中的布局。例如,如果按下按钮_1,则显示文本编辑小部件,如果按下按钮_2,则显示ListViewWidget 有人知道怎么做吗? 多谢各位 类似于 myframe.layout().removeWidget(mywidget) mywidget = QTextEdit() myframe.layout().addWidget(myWidget) 使用一个存储窗口来存储小部件。然后你可以换一个有。或者,您可以

我有一个界面,屏幕顶部有4个按钮,下面有QFrame。我想根据按下的按钮更改QFrame中的布局。例如,如果按下按钮_1,则显示文本编辑小部件,如果按下按钮_2,则显示ListViewWidget

有人知道怎么做吗? 多谢各位

类似于

myframe.layout().removeWidget(mywidget)
mywidget = QTextEdit()
myframe.layout().addWidget(myWidget)
使用一个存储窗口来存储小部件。然后你可以换一个有。或者,您可以使用一个替代
QFrame

一个简单的例子:

import sys
from PySide import QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)

        self.textEdit = QtGui.QTextEdit('Text Edit')
        self.listWidget = QtGui.QListWidget()
        self.listWidget.addItem('List Widget')
        self.label = QtGui.QLabel('Label')

        self.stackedLayout = QtGui.QStackedLayout()
        self.stackedLayout.addWidget(self.textEdit)
        self.stackedLayout.addWidget(self.listWidget)
        self.stackedLayout.addWidget(self.label)

        self.frame = QtGui.QFrame()
        self.frame.setLayout(self.stackedLayout)

        self.button1 = QtGui.QPushButton('Text Edit')
        self.button1.clicked.connect(lambda: self.stackedLayout.setCurrentIndex(0))
        self.button2 = QtGui.QPushButton('List Widget')
        self.button2.clicked.connect(lambda: self.stackedLayout.setCurrentIndex(1))
        self.button3 = QtGui.QPushButton('Label')
        self.button3.clicked.connect(lambda: self.stackedLayout.setCurrentIndex(2))

        buttonLayout = QtGui.QHBoxLayout()
        buttonLayout.addWidget(self.button1)
        buttonLayout.addWidget(self.button2)
        buttonLayout.addWidget(self.button3)

        layout = QtGui.QVBoxLayout(self)
        layout.addLayout(buttonLayout)
        layout.addWidget(self.frame)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    w = Window()
    w.show()

    sys.exit(app.exec_())

非常感谢你!您还知道如何防止每次我按下按钮时创建多个小部件吗。例如,我创建了一个标签,每次按下按钮1,就会生成另一个标签。