Python 如何来回多次切换pyqt5对话框?

Python 如何来回多次切换pyqt5对话框?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我想在对话框之间切换多次,但我现在的代码只切换了2次,然后就停止了 第一个对话框到第二个对话框(无问题) 从第二个对话框到第一个对话框(无问题) 第一个对话框到第二个对话框(因此,当我再次尝试转到第二个对话框时,代码停止运行) 我尝试过将可见性设置为True和False,而不是关闭对话框,并且还使用dialog.exec_()而不是dialog.exec() 从PyQt5导入QtCore、QtGui、qtwidget 类Ui_对话框(对象): def设置UI(自我,对话框): setObject

我想在对话框之间切换多次,但我现在的代码只切换了2次,然后就停止了

  • 第一个对话框到第二个对话框(无问题)
  • 从第二个对话框到第一个对话框(无问题)
  • 第一个对话框到第二个对话框(因此,当我再次尝试转到第二个对话框时,代码停止运行)
  • 我尝试过将可见性设置为True和False,而不是关闭对话框,并且还使用dialog.exec_()而不是dialog.exec()

    从PyQt5导入QtCore、QtGui、qtwidget
    类Ui_对话框(对象):
    def设置UI(自我,对话框):
    setObjectName(“对话框”)
    对话框。调整大小(633242)
    self.pushButton=qtwidts.QPushButton(对话框)
    自身按钮设置几何(QtCore.QRect(120、70、401、81))
    self.butdown.setObjectName(“butdown”)
    自重传(对话框)
    QtCore.QMetaObject.connectSlotsByName(对话框)
    self.按钮点击连接(self.第2页)
    def第2页(自我):
    启动_D2()
    def重新传输(自我,对话框):
    _translate=QtCore.QCoreApplication.translate
    setWindowTitle(_translate(“Dialog”,“Dialog_1”))
    self.putton.setText(_translate(“对话框”,“转到第二页”))
    类Ui_对话框_2(对象):
    def设置UI(自我,对话框):
    setObjectName(“对话框”)
    对话框。调整大小(633242)
    self.pushButton=qtwidts.QPushButton(对话框)
    自身按钮设置几何(QtCore.QRect(120、70、401、81))
    self.butdown.setObjectName(“butdown”)
    自重传(对话框)
    QtCore.QMetaObject.connectSlotsByName(对话框)
    自我按钮点击连接(自我第1页)
    def第1页(自我):
    启动_D1()
    def重新传输(自我,对话框):
    _translate=QtCore.QCoreApplication.translate
    setWindowTitle(_translate(“Dialog”,“Dialog_2”))
    self.putton.setText(_translate(“对话框”,“转到第一页”))
    def start_D2():
    尝试:
    Dialog.close()
    ui=ui_对话框_2()
    ui.setupUi(对话框2)
    对话框2.exec()
    例外情况除外,如e:
    打印(e)
    def start_D1():
    尝试:
    对话框2.关闭()
    ui=ui\u对话框()
    ui.setupUi(对话框)
    Dialog.exec()
    例外情况除外,如e:
    打印(e)
    如果名称=“\uuuuu main\uuuuuuuu”:
    导入系统
    app=qtwidts.QApplication(sys.argv)
    Dialog=qtwidts.QDialog()
    Dialog_2=qtwidts.QDialog()
    ui=ui\u对话框()
    ui.setupUi(对话框)
    Dialog.show()
    sys.exit(app.exec_())
    

    我需要的是在每次单击按钮时切换对话框,而不仅仅是一次或两次。

    您有以下错误:

    • Qt for efficiency不会引发异常,因此不必使用try-except
    • PyQt我建议不要修改QtDesigner生成的代码,因为它首先不是一个小部件,它只是一个用来填充小部件的类。相反,您必须创建另一个继承适当小部件的类,并使用初始类填充它。有关更多信息,请阅读
    解决方法是,当您按下按钮时,关闭同一个对话框并打开另一个窗口

    从PyQt5导入QtCore、QtGui、qtwidget
    类Ui_对话框(对象):
    def设置UI(自我,对话框):
    setObjectName(“对话框”)
    对话框。调整大小(633242)
    self.pushButton=qtwidts.QPushButton(对话框)
    自身按钮设置几何(QtCore.QRect(120、70、401、81))
    self.butdown.setObjectName(“butdown”)
    自重传(对话框)
    QtCore.QMetaObject.connectSlotsByName(对话框)
    def重新传输(自我,对话框):
    _translate=QtCore.QCoreApplication.translate
    setWindowTitle(_translate(“Dialog”,“Dialog_1”))
    self.putton.setText(_translate(“对话框”,“转到第二页”))
    类Ui_对话框_2(对象):
    def设置UI(自我,对话框):
    setObjectName(“对话框”)
    对话框。调整大小(633242)
    self.pushButton=qtwidts.QPushButton(对话框)
    自身按钮设置几何(QtCore.QRect(120、70、401、81))
    self.butdown.setObjectName(“butdown”)
    自重传(对话框)
    QtCore.QMetaObject.connectSlotsByName(对话框)
    def重新传输(自我,对话框):
    _translate=QtCore.QCoreApplication.translate
    setWindowTitle(_translate(“Dialog”,“Dialog_2”))
    self.putton.setText(_translate(“对话框”,“转到第一页”))
    类对话框(QtWidgets.QDialog,Ui_对话框):
    def uuu init uuu(self,parent=None):
    超级(对话框,自我)。\uuuu初始化\uuuuu(父级)
    self.setupUi(self)
    #关上窗户
    self.button.clicked.connect(self.close)
    类对话框2(QtWidgets.QDialog,Ui_对话框2):
    def uuu init uuu(self,parent=None):
    超级(对话框2,自我)。\uuuuu初始化\uuuuuuu(父级)
    self.setupUi(self)
    #关上窗户
    self.button.clicked.connect(self.close)
    如果名称=“\uuuuu main\uuuuuuuu”:
    导入系统
    app=qtwidts.QApplication(sys.argv)
    w1=对话框()
    w2=对话框2()
    #打开另一个对话框
    w1.按钮.点击.连接(w2.显示)
    w2.按钮.点击.连接(w1.显示)
    w1.show()
    sys.exit(app.exec_())