PyQt5零基础入门(二)——主窗口的显示与退出

news2024/11/19 20:29:38

系列文章目录

PyQt5与QtDesigner的安装及测试

创建主窗口和状态栏

  • 系列文章目录
    • PyQt5与QtDesigner的安装及测试
  • 前言
  • 主窗口
    • 代码
    • 运行结果
    • 解释
  • 窗口居中
    • 代码
    • 解释
  • 退出窗口
    • 代码
    • 运行结果
    • 解释


前言

本文主要介绍了如何使用PyQt5创建第一个主窗口,并向其中添加状态栏和消息提示。具体来说,我们展示了如何设置主窗口的标题和大小,并利用状态栏在界面中显示有关系统状态和操作信息。此外,我们还提供了如何添加图标到应用程序以及如何设置消息提示的详细说明。

主窗口

首先我们创建一个简单的主窗口

代码

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QIcon


class FirstMainWin(QMainWindow):
    def __init__(self, parent=None):
        super(FirstMainWin, self).__init__(parent)
        # 设置主窗口标题
        self.setWindowTitle('主窗口')

        # 设置窗口尺寸
        self.resize(400, 300)

        # 获取当前的状态栏
        self.status = self.statusBar()

        self.status.showMessage('只存在5秒的消息', 5000)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('test.jpg'))
    win = FirstMainWin()
    win.show()
    sys.exit(app.exec_())

运行结果

运行结果如下,并且在运行5秒后左下角的消息消失
在这里插入图片描述

解释

首先,我们需要安装PyQt5这个Python库,在安装好后,就可以开始创建我们的第一个主窗口!首先,我们通过导入QMainWindow和QApplication类来设计我们的界面;然后,我们创建FirstMainWin类作为主窗口的控制器,并在其中实现设置窗口属性,状态栏和消息提示功能的代码。

在代码中,我们首先设置了主窗口的标题和大小,然后获取了现有的状态栏,并在其中显示了一个“只存在5秒的消息”,这里的5000参数代表该消息出现持续的时间,以毫秒为单位(即5秒),同时我们也向应用程序添加了一个图标,以使其看起来更专业。

综上所述,我们在本文中分享了如何利用PyQt5库创建我们的第一个主窗口,并介绍了如何在其上设置状态栏和消息提示等功能。此外,我们还提供了一些额外的技巧,如如何在应用程序中添加图标等。如果你对PyQt5 GUI编程感兴趣,那么一定要看看代码实现和本文中的说明!

窗口居中

代码

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget


class CenterForm(QMainWindow):
    def __init__(self, parent=None):
        super(CenterForm, self).__init__(parent)

        self.setWindowTitle('窗口居中')
        self.resize(400, 300)

        self.center()

    def center(self):
        # 获取屏幕坐标系
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标系
        size = self.geometry()
        newLeft = (screen.width() - size.width()) / 2
        newTop = (screen.height() - size.height()) / 2
        self.move(newLeft, newTop)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = CenterForm()
    win.show()
    sys.exit(app.exec_())

解释

首先,我们需要创建一个CenterForm类,它继承自QMainWindow。这个类包含了两个主要的功能:设置主窗口标题和尺寸,以及将窗口居中对齐。我们调用QMainWindow类的构造函数,传递parent参数,并在构造函数中设置主窗口的标题和初始大小。

接着,在CenterForm类中定义了center()函数,用于实现将窗口居中对齐的功能。使用QDesktopWidget类可以获取当前显示器的几何信息(geometry),并通过计算将应用程序窗口位置移动到屏幕的中央。我们计算新的左边距和上边距,然后利用move()方法将窗口位置设置为新位置。

最后,在main函数中创建应用程序对象和CenterForm实例,并显示窗口。最后,调用app.exec_()启动应用程序的事件循环。

代码中的注释提供了相关的解释,让代码更易于阅读和理解。

总之,将窗口居中对齐是实现更专业GUI界面的一种简单但有效的方法,并且利用PyQt5类库可以方便地实现。如果您正在学习PyQt5 GUI编程并希望了解如何在窗口中让您的应用程序居中显示,这个demo将会是您很好的参考。

退出窗口

代码

import sys  # 导入sys模块
from PyQt5.QtWidgets import QHBoxLayout, QMainWindow, QApplication, QPushButton, QWidget  
# 导入PyQt5中需要使用的模块

class QuitAplication(QMainWindow):  # 声明一个名为QuitAplication的类,并继承QMainWindow类
    def __init__(self):
        super(QuitAplication, self).__init__()
        # 构造函数,初始化主窗口的一些参数
        self.resize(300, 120)  # 设置窗口大小
        self.setWindowTitle('退出应用程序')  # 设置窗口标题

        # 添加button
        self.button1 = QPushButton('退出应用程序')  # 创建一个名为‘退出应用程序’的QPushButton按钮
        self.button1.clicked.connect(self.onClick_Button)  # 连接clicked信号到相应的槽

        # 创建水平布局
        layout = QHBoxLayout()  # 创建一个水平布局
        layout.addWidget(self.button1)  # 将按钮添加到布局中

        # 将布局添加到主窗口中
        mainFrame = QWidget()  # 创建一个widget作为主框架
        mainFrame.setLayout(layout)  # 在主框架中设置刚创建的水平布局
        self.setCentralWidget(mainFrame)  # 将框架设置到主窗口的中心组件上

    # 定义按钮单击事件的槽函数
    def onClick_Button(self):
        sender = self.sender()  # 获取发出该信号(即被点击)的对象
        print(sender.text() + '按钮被按下')  # 输出被按下的按钮文本信息
        app = QApplication.instance()  # 获取当前应用程序对象
        app.quit()  # 关闭应用程序

if __name__ == '__main__':
    app = QApplication(sys.argv)  # 创建一个QApplication对象
    win = QuitAplication()  # 创建一个QuitAplication对象
    win.show()  # 显示主窗口
    sys.exit(app.exec_())  # 运行应用程序的事件循环,使整个程序进入等待状态直到直到退出运行。

运行结果

运行出以下窗口,在单击退出应用程序后窗口退出
在这里插入图片描述

解释

在这个示例代码中,我们创建了一个名为QuitApplication的类,继承自QMainWindow。我们在类的构造方法内定义了一些基本设置,如设置主窗口标题和大小等。然后我们在窗口上添加了一个QPushButton按钮,将clicked信号连接到onClick_Button()槽上。当该按钮被单击时,调用槽函数并退出应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Contest3137 - 2022-2023-2 ACM集训队每月程序设计竞赛(1)五月月赛

A 1! 5! 46 169 有一种数字,我们称它为 纯真数。 它等于自身每一个数位的阶乘之和。请你求出不超过n的所有 纯真数。(注:纯真数不含有前导0)数据范围1e18 纯真数只有四个,注意0!1 1,2,145,40585 int n;cin>>n;int res[]{…

【Java 并发编程】一文详解 Java volatile关键字

一文详解 Java volatile关键字 1. JMM(Java Memory Model)1.1 现代计算机的内存模型1.2 JMM 简介1.3 JMM 的三大特性1.4 指令重排1.5 happens-before1.5.1 happens-before 规则1.5.2 总结 1.6 as-if-serial 2. volatile 关键字2.1 volatile 的内存语义2.…

mssql 中msdb 权限说明

msdb MSDB是Microsoft SQL Server中一个系统数据库,它存储了SQL Server代理作业,备份和还原,数据库维护计划,邮件,日志和数据库相关的其他信息。MSDB数据库包含了许多系统表和视图,例如sysjobs、sysjobhis…

什么是网络——计算机网络发展史

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

面了个4年的测试,自动化测试都不会,真是醉了...

最近面试了一个 4 年经验的软件测试工程师,简历和个人介绍都提到了精通自动化测试和性能测试,于是我就问了几个自动化测试方面的问题: 你使用过哪些自动化测试工具?它们之间有什么区别? 请解释一下 TestNG 框架&#…

分享丨从事设计10年后转行产品经理,总结6种工作差异

作者从设计转行到产品管理,在获得关于产品策略方面更大的话语权同时,也失去了专注于工作本身的自由。经历了角色转变这一过程后,分享了她对于这两个角色在日常生活中差异的些许反思,同时也鼓励大家在转变角色前,先深入…

增强型语言模型——走向通用智能的道路?!?

增强型语言模型——走向通用智能的道路?!? FesianXu 20230325 at Baidu Search Team 前言 继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chat…

【react从入门到精通】React父子组件通信方式详解(有示例)

文章目录 前言React技能树通过 props 实现父子组件通信通过 state 实现父子组件通信通过回调函数实现父子组件通信使用 React Context 实现组件通信总结写在最后 前言 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信…

详解SpringBoot外部化配置

SpringBoot外部化配置(基于2.4.0以后) Spring Boot可以让你将配置外部化,这样你就可以在不同的环境中使用相同的应用程序代码。 你可以使用各种外部配置源,包括Java properties 文件、YAML文件、环境变量和命令行参数。 属性值可…

【刷题笔记】二维数组地址计算+算法分析+进制转换

目录 一、二维数组地址计算 题目: 分析: 解答: 二、算法分析举例 题目: 分析: 解答: 三、进制转换 题目: 分析: 解答: 一、二维数组地址计算 题目&#xff…

3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)

目录 makefile概述 makefile创建变量的目的 自定义变量 makefile变量的赋值 自动变量 makefile隐含变量 makefile概述 makefile重要性 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 make是一个命令工具,是一个解释makefil…

Docker高频使用命令总结(镜像与容器命令)

目录 一.Docker常用命令总结 1.镜像命令管理 2.容器命令管理 二.Docker镜像操作命令 1.docker search:搜索镜像 2.docker pull:下载镜像 3.docker push:上传镜像 4.docker images:查看本地镜像 5.docker inspect &#x…

全球最大蒸馏体量干邑集团,邀请酣客老王讲授产品设计大师课

酒作为文化符号,寄托着全人类的精神追求,与历史、艺术为伍,充当着国际间友好交流的使者。为了弘扬中国白酒文化,把品质卓越的中国酱酒带到全世界,也为了给中国的烈酒爱好者讲清中外烈酒之间的工艺与文化差异,酣客君丰发起了“中国酱酒世界行”,不远万里探访欧洲各国名酒产区,一…

Flutter学习之旅 -网格布局

GridView列表三种形式 可以通过GridView.count实现网格布局 /* 格式: GridView.count(crossAxisCount: 一行显示数量,children: [component(),...],) */ class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(B…

如何利用问卷工具助力活动开展,实现高效数据收集?

问卷调查是一种常用的活动开展方式,它可以帮助我们更好地了解参与者的需求和意见,为活动的开展提供有力的参考和依据。 1、了解期望和需求:在活动中,我们可以事先通过问卷调查了解参与者的需求、意见、对活动的需求和期望&#x…

PCB制板之前的DFM分析

PCB制板之前的DFM分析 1.华秋DFM分析2.AD18输出IPC文件3.华秋DFM分析开短路 1.华秋DFM分析 1.打开华秋DFM软件,目前先用这软件做DFM分析,主要是简单容易上手操作,并且分析完成之后可以一键下单。 2.将输出的gerber文件导入华秋DFM这个软件…

ubuntu18.04 + 3060 安装测试

分区 在这里,我们进行手动分区,假设你留出的空闲分区为 80G,点击空闲盘符,点击""进行分区,如下: 1)efi:如果是单硬盘,在唯一的一个空闲分区上添加&#xff0…

为项目创建Qframework!

liangxiegame/QFramework: Unity3D System Design Architecture (github.com) 下载这个download 在unity中打开! 就可以啦 ———— 这里总结一下UI和自动脚本两个非常常用的功能: UI https://www.bilibili.com/video/BV1QK411m7g4/?spm_id_from…

美格智能发布基于高通QCS8550处理器的高算力AI模组SNM970,定义未来终端新体验

近日,全球领先的无线通信模组及解决方案提供商美格智能发布了高算力AI模组SNM970。该产品是行业首批基于高通QCS8550处理器开发的AI模组产品,并凭借卓越的8核高通Kryo™ CPU、综合AI算力高达48Tops、支持Wi-Fi 7等特性,助力将运算效能和灵活性…