Python 如何从QWidget中删除QVBoxLayout或将其转换为QGridLayout?

Python 如何从QWidget中删除QVBoxLayout或将其转换为QGridLayout?,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我正在尝试对GUI进行一些修改。我的GUI构建在QWidget上。起初,我在QWidget中只有一个QPushButton,然后被删除,取而代之的是一个QGridlayout,它包含了许多其他东西。现在,我想首先在QVBoxLayout中保留两个按钮,它们被删除,QVBoxLayout被删除和/或替换为QGridLayout,然后保存下一个项目 问题:我无法删除和/或用QGridLayout替换QVBosLayout 下面是最小的可复制示例。您需要PyQt5才能运行 from PyQt5 imp

我正在尝试对GUI进行一些修改。我的GUI构建在QWidget上。起初,我在QWidget中只有一个QPushButton,然后被删除,取而代之的是一个QGridlayout,它包含了许多其他东西。现在,我想首先在QVBoxLayout中保留两个按钮,它们被删除,QVBoxLayout被删除和/或替换为QGridLayout,然后保存下一个项目

问题:我无法删除和/或用QGridLayout替换QVBosLayout

下面是最小的可复制示例。您需要PyQt5才能运行

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form():

    def __init__(self):
        self.nCode_analysis_set_up = QtWidgets.QWidget()
        self.nCode_analysis_set_up.resize(300, 100)
        self.nCode_analysis_set_up.setWindowFlags(self.nCode_analysis_set_up.windowFlags() | QtCore.Qt.MSWindowsFixedSizeDialogHint)
        self.nCode_analysis_set_up.setWindowTitle("nCode analysis set-up")
        self.Box = QtWidgets.QVBoxLayout(self.nCode_analysis_set_up)
        self.importButton = QtWidgets.QPushButton(self.nCode_analysis_set_up)
        self.importButton.setText("Open import model")
        self.importButton.clicked.connect(self.input_model)
        self.Box.addWidget(self.importButton)

    def input_model(self):
        self.importButton.deleteLater()
        self.Box.deleteLater()
        self.Box = QtWidgets.QGridLayout(self.nCode_analysis_set_up)
        self.analysis_type_label = QtWidgets.QLabel(self.nCode_analysis_set_up)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    ui = Ui_Form()
    ui.nCode_analysis_set_up.show()
    sys.exit(app.exec_())

不要删除小部件,因为它通常带来的问题多于好处,而是使用QStackWidget或QStackedLayout:

从PyQt5导入QtCore、QtGui、qtwidget
类别用户界面表格:
定义初始化(自):
self.nCode\u analysis\u set\u up=qtwidts.QWidget()
self.nCode\u analysis\u setup\u resize(300100)
self.nCode\u analysis\u set\u up.setWindowFlags(
self.nCode\u analysis\u set\u up.windowFlags()
|QtCore.Qt.MSWindowsFixedSizeDialogHint
)
self.nCode\u analysis\u setup.setWindowTitle(“nCode analysis setup”)
self.stacked=qtwidts.QStackedLayout(self.nCode\u分析\u设置)
widget1=qtwidts.QWidget()
box_1=qtwidts.QVBoxLayout(widget1)
self.importButton=qtwidts.QPushButton()
self.importButton.setText(“打开导入模型”)
self.importButton.clicked.connect(self.input\u模型)
框1.addWidget(self.importButton)
widget2=qtwidts.QWidget()
box_2=qtwidts.QGridLayout(widget2)
self.analysis\u type\u label=qtwidts.QLabel()
self.analysis\u type\u label.setText(“label”)
框2.addWidget(自我分析类型标签)
self.stacked.addWidget(widget1)
self.stacked.addWidget(widget2)
def输入_型号(自):
self.stacked.setCurrentIndex(1)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
ui=ui_Form()
ui.nCode\u analysis\u set\u up.show()
sys.exit(app.exec_())