在PyQt中实现更多窗口的好方法

时间:2014-07-25 13:01:20

标签: python user-interface pyqt pyqt4

此处描述了如何在用户单击按钮后打开新窗口:

https://stackoverflow.com/a/21414775/1898982

在这里:

https://stackoverflow.com/a/13519181/1898982

class Form1(QtGui.QWidget, Ui_Form1):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setupUi(self)
        self.button1.clicked.connect(self.handleButton)
        self.window2 = None

    def handleButton(self):
        if self.window2 is None:
            self.window2 = Form2(self)
        self.window2.show()

class Form2(QtGui.QWidget, Ui_Form2):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setupUi(self)

我想开发一个包含几个步骤的GUI应用程序。用户单击下一步后,当前窗口关闭,另一个窗口打开。从技术上讲,我可以像上面描述的那样做:每个窗口打开一个新窗口。经过几个步骤后,这几乎是嵌套的。

有更好的方法吗?

我想在我的主要控制流程。像这样:

main()
   window1 = win2()
   window1.show()
   wait until button in window1 is clicked, then
   window1.close()

   window2 = win2()
   window2.show()
   wait until button in window2 is clicked, then
   window1.close()
   ....

2 个答案:

答案 0 :(得分:0)

Qt为此类案例提供了特殊的小部件,称为QWidget。看它。它也可以在Qt4中使用。

答案 1 :(得分:0)

我建议使用QWizardQStackedWidget类来执行此任务。您可以使用这两个类中的任何一个轻松切换小部件或窗口。请参阅QWizardQStackedWidget文档。