PyQt5的多窗口设计

步骤一

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

在这里插入图片描述

步骤2

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

在这里插入图片描述

步骤3

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

在这里插入图片描述

步骤4

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

在这里插入图片描述

步骤5

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

在这里插入图片描述

然后在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_())

运行就可以得到如下结果

在这里插入图片描述

完整的代码如下

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_())

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是两种PyQt5界面设计多窗口的例子: 1. 使用Tab Widget实现多页面切换: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Tab Widget Example") # 创建Tab Widget self.tab_widget = QTabWidget() # 创建页面1 page1 = QWidget() layout1 = QVBoxLayout() layout1.addWidget(QLabel("Page 1")) page1.setLayout(layout1) # 创建页面2 page2 = QWidget() layout2 = QVBoxLayout() layout2.addWidget(QLabel("Page 2")) page2.setLayout(layout2) # 将页面添加到Tab Widget中 self.tab_widget.addTab(page1, "Page 1") self.tab_widget.addTab(page2, "Page 2") # 设置Tab Widget为主窗口的中心部件 self.setCentralWidget(self.tab_widget) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 2. 使用Stacked Widget实现多页面切换: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QWidget, QVBoxLayout class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Stacked Widget Example") # 创建Stacked Widget self.stacked_widget = QStackedWidget() # 创建页面1 page1 = QWidget() layout1 = QVBoxLayout() layout1.addWidget(QLabel("Page 1")) page1.setLayout(layout1) # 创建页面2 page2 = QWidget() layout2 = QVBoxLayout() layout2.addWidget(QLabel("Page 2")) page2.setLayout(layout2) # 将页面添加到Stacked Widget中 self.stacked_widget.addWidget(page1) self.stacked_widget.addWidget(page2) # 设置Stacked Widget为主窗口的中心部件 self.setCentralWidget(self.stacked_widget) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xy_optics

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值