User interface Pyside-按下按钮时更改整个GUI

User interface Pyside-按下按钮时更改整个GUI,user-interface,python-2.7,pyside,qlineedit,User Interface,Python 2.7,Pyside,Qlineedit,我是pyside的新手,我的小程序(和pyside的总体布局)有问题 我拥有的是一个带有QlineEdit、组合框和按钮的UI。填写QLINE并按下按钮后,我想打开一个具有全新布局的新窗口,或者最好清除打开的窗口,并根据QLINE的输入使用新布局进行填充。也许这是超基本的,但我不能让它工作。原因是我无法理解如何在已经设置和显示的gui中替换或添加新内容 假设我有这样一个脚本: import sys import os from PySide import QtCore, QtGui cl

我是pyside的新手,我的小程序(和pyside的总体布局)有问题

我拥有的是一个带有QlineEdit、组合框和按钮的UI。填写QLINE并按下按钮后,我想打开一个具有全新布局的新窗口,或者最好清除打开的窗口,并根据QLINE的输入使用新布局进行填充。也许这是超基本的,但我不能让它工作。原因是我无法理解如何在已经设置和显示的gui中替换或添加新内容

假设我有这样一个脚本:

import sys
import os



from PySide import QtCore, QtGui

class BasicGui(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):


        self.projectNameLbl1 = QtGui.QLabel('Label1')
        self.projectNameLbl2 = QtGui.QLabel('Label2')


        self.nextBtn = QtGui.QPushButton("Next")

        self.projectNameEdit = QtGui.QLineEdit(self)
        self.projectNameEdit2 = QtGui.QLineEdit(self)



        grid = QtGui.QGridLayout()
        grid.setSpacing(10)




        grid.addWidget(self.projectNameLbl1, 2, 0)
        grid.addWidget(self.projectNameEdit, 2, 1)
        grid.addWidget(self.projectNameLbl2, 3, 0)
        grid.addWidget(self.projectNameEdit2, 3, 1)

        grid.addWidget(self.nextBtn, 4, 1)


        self.setLayout(grid)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('projectCreator')    
        self.show()
        self.nextBtn.clicked.connect(self.nextPressed)


    def nextPressed(self):
        self.msgBox = QtGui.QMessageBox()
        self.msgBox.setText("When this button is pressed I want to generate a new layout")
        self.msgBox.exec_()



def main():

    app = QtGui.QApplication(sys.argv)
    ex = BasicGui()
    sys.exit(app.exec_())




if __name__ == '__main__':
    main()
假设我在label1旁边的行中输入10,在另一行中输入2,然后按next。现在我想清除所有内容并创建两个新列,每个列中有10个Qline(或类似的内容)

请原谅,我不是说得含糊不清,就是在重复我自己。我又累又烦,英语不是我的第一语言

如果能得到任何帮助或朝着正确的方向努力,我将不胜感激


编辑:如果使用其他带有选项卡的widgetype或其他更好的方法更容易实现这一点。我要做的就是在收到用户输入后生成新的小部件。

您要做的是使用
QStackedLayout
[1]

  • 创建一个
    QWidget
  • 创建您的布局
  • 使用布局作为参数在小部件上调用
    setLayout()
  • 将新小部件推到
    QStackedLayout
  • 使用
    QStackedLayout
    setCurrentIndex()
    setCurrentWidget()
    函数设置当前布局
  • 我在我的一个项目中做了类似的事情。有关更完整的示例,请参见。另请参阅以了解类似的问题


    [1] 您要做的是使用
    QStackedLayout
    [1]

  • 创建一个
    QWidget
  • 创建您的布局
  • 使用布局作为参数在小部件上调用
    setLayout()
  • 将新小部件推到
    QStackedLayout
  • 使用
    QStackedLayout
    setCurrentIndex()
    setCurrentWidget()
    函数设置当前布局
  • 我在我的一个项目中做了类似的事情。有关更完整的示例,请参见。另请参阅以了解类似的问题

    [1]