PyQt5的多窗口设计

文章目录

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

步骤一

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/619662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 旋转立方体

文章目录 效果图运行环境完整代码实现思路1. 导入库和定义常量2. 创建Cube类3. 实现Cube类的draw方法4. 实现主函数 效果图 运行环境 python版本:python3.x 依赖包: $ pip install pygame $ pip install numpy完整代码 import numpy as np # 导入 N…

【复试分数线】工科985历年分数线汇总(第三弹)

国家线 可以看作是考研上岸最最最基础的门槛。真正决定你能不能进入复试的还要看院线(复试分数线)!今天我将分析考信号的5所工科类985近三年复试分数线,大家可以参考!! 分别是:①北京航空航天大…

k8s coredns配置

1.coredns可根据集群具体数量修改pod数,官方推荐比例为5/1,即有15台服务器最好是3个pod。 2.coredns会继承pod所在主机的dns解析,修改了主机的dns解析之后,coredns有一段时间的缓存,重启coredns才会在集群内部立刻生效该解析。 …

黑马甄选离线数仓项目day01(项目介绍)

课程介绍 项目名称 黑马甄选数仓形式 离线数仓开发业务类型 电商业务 电商介绍 B2B B2C C2C 项目属于 新零售电商 新零售 线上(网站,app,小程序) 线下(实体体验店) 物流(自营物流) 项目行业 果蔬生鲜领域 商业模式 B…

[图解]实现领域驱动设计译文暴露的问题03

0 00:00:02,960 --> 00:00:04,940 前面我们讲了 1 00:00:05,260 --> 00:00:06,810 第①句话的 2 00:00:07,090 --> 00:00:09,750 第(1)个问题和第(2)个问题 3 00:00:13,920 --> 00:00:16,930 共享父类的对象&#…

【代码随想录算法训练Day5】今天休息,复盘总结

Day5 休息日 时机恰到好处,刚好学习完了数组和链表,从代码随想录里扒了两张总结图来,这就是这几天里我们一起解决的问题,如果以后忘了,还有问题,先回到这里,只看思维导图,还能想起来…

WordPress 管理员密码重置方法汇总

最近明月碰到一个 WordPress 站长求助咨询,说是自己 WordPress 站点的管理员密码被恶意篡改了,对 WordPress 了解的都知道这一般都是恶意代码造成的,问题大多出在使用了所谓的破解版、去授权版的插件或者主题被植入了恶意代码、后门木马。明月…

【目标检测论文解读复现NO.38】基于改进YOLOv8模型的轻量化板栗果实识别方法

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

革新机器人任务规划:TREE-PLANNER引领高效、准确的机器人动作生成新趋势

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言 任务规划在机器人技术中扮演着至关重要的角色。它涉及到为机器人设计一系列中级动作(技能),使其能够完成复杂的高级任…

网络基础(三)——网络层

目录 IP协议 1、基本概念 2、协议头格式 2.1、报头和载荷如何有效分离 2.2、如果超过了MAC的规定,IP应该如何做呢? 2.3、分片会有什么影响 3、网段划分 4、特殊的ip地址 5、ip地址的数量限制 6、私有ip地址和公网ip地址 7、路由 IP协议 网络…

C语言/数据解构——(随即链表的复制)

一.前言 嗨嗨嗨,大家好久不见。已经有好几天没更新了。今天我们就分享一道链表题吧——随即链表的复制https://leetcode.cn/problems/copy-list-with-random-pointer废话不多说,让我们直接开始今天的题目分享吧。 二.正文 1.1题目描述 他和单链表不同…

Java入门最小必要知识:变量及其本质

编程语言是与计算机交流的桥梁,而在编程世界中,变量是这座桥上不可或缺的砖石。 从本质上,可以把复杂的编程工作简化为两件事: ①定义变量②操作变量 可见,变量之于编程的重要性。 对于Java开发者,理解…

自动土壤墒情监测仪

TH-GTS04随着科技的快速发展,自动土壤墒情监测仪已成为现代农业、园林、城市绿化等领域不可或缺的重要工具。其中,管式土壤墒情监测仪以其独特的优势,受到了广大用户的青睐。本文将详细阐述管式土壤墒情监测仪的优势,以便读者更好…

【AI+漫画】程序员小李解决疑难杂症BUG的日常

周末花了点时间制作的AI漫画。 感慨一句,程序人生, 相伴随行。 原文链接:【AI漫画】程序员小李解决疑难杂症BUG的日常

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

AI图书推荐:利用生成式AI实现业务流程超自动化

《利用生成式AI实现业务流程超自动化》&#xff08;Hyperautomation with Generative AI&#xff09;这本书探索了广泛的用例和示例&#xff0c;展示了超自动化在不同行业、领域和特定部门的多样化应用&#xff0c; 让您熟悉UiPath、Automation Anywhere和IBM等流行工具和平台&…

vue3中的toRef、toRefs和toRaw

1.toRef toRef 的作用是将一个响应式对象中的属性转换成单独的响应式引用。转换后的响应式引用会跟踪原始属性的变化。转换后的响应式可以被用于计算属性及监听器中。 如果原始对象是非响应式的则不会更新视图&#xff0c;数据会改变。 接收两个参数&#xff1a; 参数一&…

DDS块集是如何工作的?

DDS块集使你能够在Simulink中创建DDS应用程序。如果你有一个在Simulink中建模的应用程序&#xff0c;希望能够使用DDS&#xff0c;则可以使用DDS块集轻松连接到DDS中间件平台。 DDS块集将DDS概念引入Simulink环境&#xff0c;在Simulink应用程序中对这些概念进行建模&#xff0…

一个注解实现SpringBoot接口请求数据和返回数据加密,提高系统安全性!

注解实现接口加密 1、前言1.1、前端必看1.2、后端必看 2、后端注解实现2.1、实现流程2.2、开始实现2.2.1、 pom2.2.2、 注解2.2.3、 加密工具类2.2.3、 定义切面(注意切点包名)2.2.4、 定义加密基类与各种入参VO2.2.5、写两个Controller 3、参考文章 1、前言 起因是公司给人开发…

Python | Leetcode Python题解之第79题单词搜索

题目&#xff1a; 题解&#xff1a; class Solution:def exist(self, board: List[List[str]], word: str) -> bool:def dfs(i, j, k):if not 0 < i < len(board) or not 0 < j < len(board[0]) or board[i][j] ! word[k]: return Falseif k len(word) - 1: r…