文章目录

  • 步骤一
  • 步骤2
  • 步骤3
  • 步骤4
  • 步骤5
  • 完整的代码如下

步骤一

1.首先新建一个窗口,把对象名改为ParentWindow,然后保存,把.ui的名字改为Main_window.ui

python pyqt5多界面开发 pyqt5多个窗口_python pyqt5多界面开发

步骤2

再新建一个窗口,把对象名改为ChildWindow1,然后保存,把.ui的名字改为child_window_1.ui

python pyqt5多界面开发 pyqt5多个窗口_子窗口_02

步骤3

再新建一个窗口,把对象名改为ChildWindow2,然后保存,把.ui的名字改为child_window_2.ui

python pyqt5多界面开发 pyqt5多个窗口_子窗口_03

步骤4

然后,分别用PyUIC将这三个.ui文件转化为.py文件,

python pyqt5多界面开发 pyqt5多个窗口_子窗口_04

步骤5

首先,打开这三个py文件,全部在开头导入QMainWindow的类,然后,继承这个类,如下图所示

python pyqt5多界面开发 pyqt5多个窗口_子窗口_05

然后在Main_window.ui这个文件里定义一个方法用于打开子窗口1和2

def open_child_window(self):
        from child_window_1 import Ui_ChildWindow1
        from child_window_2 import Ui_ChildWindow2
        self.child1 = Ui_ChildWindow1()
        self.child2 = Ui_ChildWindow2()
        self.child1.show()
        self.child2.show()

定义一个按钮且通过.connect()方法来关联按钮与子窗口之间的关系

self.button = QPushButton(self.centralwidget)
self.button.setText("打开子窗口")
self.button.clicked.connect(self.open_child_window)

最后再给这个程序一个主程序用于运行显示,即

if __name__ == "__main__":
    # 导入 sys 模块,用于处理命令行参数和退出应用程序
    import sys

    # 创建一个 QApplication 实例,这是 PyQt 应用程序的主对象
    app = QtWidgets.QApplication(sys.argv)
    # 创建一个 QMainWindow 实例,这是应用程序的主窗口
    MainWindow = QtWidgets.QMainWindow()
    # 创建一个 Ui_MainWindow 实例,这是用于设计主窗口界面的类
    ui = Ui_ParentWindow()
    # 调用 Ui_MainWindow 类中的 setupUi() 方法,将主窗口设置为设计的界面
    ui.setupUi(MainWindow)
    # 显示主窗口
    MainWindow.show()
    # 进入主循环,等待事件的发生,直到应用程序被关闭
    sys.exit(app.exec_())

运行就可以得到如下结果

python pyqt5多界面开发 pyqt5多个窗口_开发语言_06

完整的代码如下

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QPushButton, QMainWindow


class Ui_ParentWindow(QMainWindow):
    def setupUi(self, ParentWindow):
        ParentWindow.setObjectName("ParentWindow")
        ParentWindow.resize(374, 301)
        self.centralwidget = QtWidgets.QWidget(ParentWindow)
        self.centralwidget.setObjectName("centralwidget")
        ParentWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(ParentWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 374, 23))
        self.menubar.setObjectName("menubar")
        ParentWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(ParentWindow)
        self.statusbar.setObjectName("statusbar")
        ParentWindow.setStatusBar(self.statusbar)

        self.retranslateUi(ParentWindow)
        QtCore.QMetaObject.connectSlotsByName(ParentWindow)

        self.button = QPushButton(self.centralwidget)
        self.button.setText("打开子窗口")
        self.button.clicked.connect(self.open_child_window)

    def retranslateUi(self, ParentWindow):
        _translate = QtCore.QCoreApplication.translate
        ParentWindow.setWindowTitle(_translate("ParentWindow", "MainWindow"))

    def open_child_window(self):
        from child_window_1 import Ui_ChildWindow1
        from child_window_2 import Ui_ChildWindow2
        self.child1 = Ui_ChildWindow1()
        self.child2 = Ui_ChildWindow2()
        self.child1.show()
        self.child2.show()

if __name__ == "__main__":
    # 导入 sys 模块,用于处理命令行参数和退出应用程序
    import sys

    # 创建一个 QApplication 实例,这是 PyQt 应用程序的主对象
    app = QtWidgets.QApplication(sys.argv)
    # 创建一个 QMainWindow 实例,这是应用程序的主窗口
    MainWindow = QtWidgets.QMainWindow()
    # 创建一个 Ui_MainWindow 实例,这是用于设计主窗口界面的类
    ui = Ui_ParentWindow()
    # 调用 Ui_MainWindow 类中的 setupUi() 方法,将主窗口设置为设计的界面
    ui.setupUi(MainWindow)
    # 显示主窗口
    MainWindow.show()
    # 进入主循环,等待事件的发生,直到应用程序被关闭
    sys.exit(app.exec_())