【PyQt5学习篇 · ①】:探索PyQt的优势、库结构和窗口创建,解析程序及sys.argv、sys.exit()的作用

PyQt是什么?

PyQt是一个用于创建跨平台图形用户界面(GUI)应用程序的Python绑定框架。它基于Qt框架开发,Qt是一个功能强大的C++跨平台应用程序开发框架,被广泛应用于开发桌面、移动和嵌入式应用程序。PyQt几乎保持了Qt全部原有的API。

PyQt提供了一套完整的工具和组件,使开发者能够方便地利用Python语言构建功能丰富、美观、易于使用的GUI应用程序。PyQt支持所有主流的操作系统,包括Windows、MacOS、Linux以及一些嵌入式平台。它提供了许多预先设计好的用户界面控件,如按钮、文本框、下拉框、菜单等,以及绘图、动画、网络通信和多线程等丰富的功能模块。

官网链接:

本专栏【PyQt5从入门到精通】使用的环境版本:

  • Python 3+
  • PyQt5

PyQt的优势

  1. 文档齐全:PyQt是对Qt库的一个绑定,且保持了Qt库原有的API,因此PyQt除了可以使用自己的文档,也几乎可以通用Qt的文档。

  2. 稳定性高:PyQt使用C++开发,底层使用Qt库,因此比纯Python的GUI库更加稳定可靠。PyQt支持跨平台开发,而且保持着和Qt库的同步更新,因此在不同的操作系统和Python版本下都有良好的兼容性。

  3. 生态支持:PyQt拥有一个活跃的社区和丰富的第三方库支持,可以方便地实现各种功能,如数据库操作、图形绘制、图像处理等。另外,PyQt作者也开发了一些扩展包,如PyQtChart、PyQtDataVisualization等,使得绘制图表和数据可视化变得更加容易。

  4. 开源免费:PyQt采用LGPL开源协议,因此开发人员可以免费使用、修改和分发PyQt,也可以获得Qt的完整源代码访问权限(需要商业授权),这使得PyQt在开源界和商业界都有广泛的应用和支持。

了解PyQt的库结构

下面是PyQt5的库结构的详细介绍:

  1. QtCore模块:包含了Qt的核心非GUI功能,如事件循环、定时器、线程、文件和文件夹操作、时间和日期等。这个模块是PyQt5的基础。

  2. QtGui模块:包含了Qt的GUI相关功能,如窗口、窗口部件、绘图、颜色、字体、图片等。这个模块提供了创建和管理用户界面的基本工具。

  3. QtWidgets模块:是PyQt5中最常用和最重要的模块,提供了一系列用户界面控件,如按钮、文本框、标签、表格、菜单、滚动条等。开发者可以利用这些控件快速构建用户界面。

  4. QtMultimedia模块:用于处理多媒体相关的功能,如音频、视频、摄像头等。这个模块提供了访问和处理多媒体资源的接口。

  5. QtNetwork模块:用于处理网络通信相关的功能,如TCP/IP、UDP、HTTP等。这个模块提供了与网络相关的类和方法,方便开发者进行网络编程。

  6. QtSql模块:用于数据库操作,支持多种数据库系统,如SQLite、MySQL、Oracle等。这个模块提供了访问和操作数据库的功能。

  7. QtWebEngine模块:用于在应用程序中嵌入Web内容,如网页浏览器、HTML5应用等。

  8. QtWebEngineWidgets模块:提供了WebEngine模块的Qt Widgets集成,用于在Qt应用程序中显示和控制Web内容。

除了以上的核心模块外,PyQt5还包含了其他一些辅助模块,如QtPrintSupport(打印支持)、QtSvg(矢量图形支持)、QtTest(单元测试支持)等。这些模块提供了额外的功能,方便开发者进行更加丰富和多样化的应用程序开发。

创建第一个窗口

下面举个例子,使用PyQt创建第一个窗口:

from PyQt5.Qt import *  # 导入PyQt5中的核心模块和GUI模块,“*”表示导入全部内容
import sys  # 导入sys模块,用于退出应用程序

# 1、创建一个QApplication实例,作为应用程序的主对象
app = QApplication(sys.argv)

# 2、控件的操作
# 创建一个QWidget实例,即一个窗口
window = QWidget()
window.setWindowTitle("我的第一个PyQt窗口")    # 设置窗口的标题
window.resize(500, 500)     # 设置窗口的大小为宽500像素、高500像素
window.move(400, 200)       # 设置窗口移动到屏幕的位置

# 创建一个QLabel实例,即一个文本标签
label = QLabel(window)
label.setText("Hello PyQt")
label.move(200, 200)

# 显示窗口
window.show()

# 3、进入应用程序的主事件循环
# 检测整个程序所接收到的用户的交互信息,直到调用sys.exit()退出程序
sys.exit(app.exec_())

运行结果:

在这里插入图片描述

程序解释

  1. 一个PyQt程序都需要一个应用程序对象
    • 它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。
    • 它也处理应用程序的初始化和结束,并且提供对话管理。
    • 它也处理绝大多数系统范围和应用程序范围的设置。
  2. app.exec_()意思是让程序进入主循环,不要停止。
  3. 一个没有父对象控件默认不显示,必须要调用show()才能显示。
  4. 一个应用程序中可以显示多个顶级控件
    • 如果一个Widget没有父控件,则认定为是顶级控件(顶级窗口)
    • 如果想要一个控件展示在另外一个控件内部,必须要有父子关系
    • 如果两个对象为父子关系,那么父对象显示之后,一般子对象会自动显示

sys.argv的作用

sys.argv 是 Python 中 sys 模块的一个变量,它是一个字符串列表,包含了命令行执行 Python 文件时传入的参数。

实例:创建一个text.py文件,写入如下程序

from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
print(app.arguments())
print(qApp.arguments())

并在Python终端运行:

在这里插入图片描述
结果可看到命令行打印出传入的参数,其中程序中的app是自己创建的,而qApp是一个全局的变量,用他们来获取命令行的参数。

因此,我们可以利用sys.argv来通过命令行传递参数,并根据不同的参数实现相应的功能。例如,我们可以根据用户传入的参数来读取不同的配置文件,或者根据不同的参数来执行程序的不同模式或功能。

sys.exit()的作用

sys.exit() 是 Python 中 sys 模块的函数之一,它可以退出 Python 解释器。

当我们调用 sys.exit() 函数时,它将以参数(默认为 0)为返回值,然后退出正在运行的进程。即执行 sys.exit() 后,程序会立即停止,并返回到系统上一层的调用程序,返回值表示程序的退出状态。

通常情况下,我们可以使用 sys.exit() 来正常退出一个 Python 程序。例如,当程序运行结束时,我们可以在最后一行添加 sys.exit() 来保证程序的正常退出并释放程序占用的资源。

另外,在 Python 程序执行中,如果某个地方发生了严重的错误或异常,导致程序无法继续执行,我们可以使用 sys.exit() 来提前退出程序并返回错误代码。(错误代码通常不为 0,可以作为操作系统诊断问题的依据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

街 三 仔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值