使用Python,PyQt,Qt Designer用新窗口替换现有的MainWindow

Sha*_*yad 6 python pyqt qt-designer

我是Python GUI编程的新手,制作GUI应用程序时遇到麻烦。我有一个仅带有按钮小部件的主窗口。我想知道的是,发生事件(例如单击按钮)时如何用新窗口替换现有窗口。
一个类似问题的答案在这里替换MainWindow中的CentralWidget,建议使用QStackedWidgets,但他们没有使用Qt Designer来制作其GUI应用程序,而我有两个.py文件,一个是主窗口文件,另一个是我想要的窗口在按下按钮后显示,因此我不知道如何在main.py文件中将两者结合起来。例如,我的主窗口如下所示:
主视窗
在单击按钮后,应使用以下命令替换现有窗口:
新窗户
我还想知道第二个窗口是否应为QStackedWindow,QDialog或QWidget类型?
这是我的main.py代码

from PyQt4 import QtGui
import sys
import design, design1
import os

class ExampleApp(QtGui.QMainWindow, design.Ui_MainWindow):
    def __init__(self, parent=None):
        super(ExampleApp, self).__init__(parent)
        self.setupUi(self)
        self.btnBrowse.clicked.connect(self.doSomething)


    def doSomething(self):
        # Code to replace the main window with a new window
        pass


def main():
    app = QtGui.QApplication(sys.argv)
    form = ExampleApp()
    form.show()
    app.exec_()


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

Bre*_*bel 2

您可能不想实际创建和删除一堆窗口,但如果您确实想要,您可以这样做

def doSomething(self):
    # Code to replace the main window with a new window
    window = OtherWindow()
    window.show()
    self.close()
Run Code Online (Sandbox Code Playgroud)

OtherWindow班级里的

class OtherWindow(...):
    ...
    def doSomething(self):
        window = ExampleApp()
        window.show()
        self.close()
Run Code Online (Sandbox Code Playgroud)

你实际上可能不想这样做。QStackedWidget如果您只是创建 1 个主窗口,然后将不同的控件和小部件放在堆叠小部件的不同选项卡上,然后在同一窗口中在它们之间切换,那就更好了。