Python PyQt5 入门指南:环境配置、核心模块与基础GUI开发

阿橙
阿橙
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍Python PyQt5框架的安装配置、核心模块分类及基础GUI开发流程。涵盖从pip安装到sys库详解,通过摄氏度转换实例演示QWidget继承、信号槽机制及窗口设置,帮助开发者快速掌握PyQt5基础应用开发。

PyQt5 概述与授权

PyQt5 是 Digia 公司推出的 Qt5 应用框架与 Python 语言的结合体,兼容 Python 2.x 和 3.x 版本。其官方网站为 www.riverbankcomputing.co.uk/news,提供了相关资源与更新信息。

PyQt5 由一系列 Python 模块构成,包含超过 620 个类和 6000 多个函数与方法。它支持 Unix、Windows 和 Mac OS 等主流操作系统。PyQt5 提供两种授权许可:GPL(通用公共许可证)和商业许可证,用户可根据需求选择。

PyQt5 的类库被划分为多个模块,主要模块包括以下内容:

  • QtCore 模块包含核心的非 GUI 功能,主要处理时间、文件与文件夹操作、各类数据格式、流处理、URLs、MIME 类型、进程与线程管理等底层功能。
  • QtGui 模块涵盖窗口系统、事件处理、2D 图像绘制、基本绘画功能、字体渲染及文字处理类。
  • QtWidgets
  • QtMultimedia
  • QtBluetooth
  • QtNetwork
  • QtPositioning
  • Enginio
  • QtWebSockets
  • QtWebKit
  • QtWebKitWidgets
  • QtXml
  • QtSvg
  • QtSql
  • QtTest

PyQt5 核心模块详解

正文开始

PyQt5 环境配置与安装

接下来我们开启一个新的章节。由于我对 GUI 设计相对熟悉,因此先从 GUI 设计入手。需要说明的是,本文使用的是 PyQt5,而非 Python 自带的 Tkinter。我对 Tkinter 并不熟悉,甚至可以说基本不会。本栏目主要讲解 PyQt5 的基础知识,更进阶的内容建议读者自行探索,因为内容过多我也难以一一详述,且过于复杂的内容容易让人困惑。栏目介绍完毕,现在进入正式内容。

首先,PyQt5 是第三方库,直接 import 会报错,必须预先下载。关于如何下载 Python 第三方库,我在基础栏目的 Python 库介绍中已提及,大家可以自行翻阅。这里再补充一个简单的方法。

在命令提示符(cmd)中操作(适用于 Windows 系统,Linux 和 macOS 系统因未使用,敬请谅解)。

pip install PyQt5

操作很简单。如果报错,你会看到一堆红色文字。如果末尾显示“time out”,说明连接中断,请多尝试几次。其他错误请自行搜索解决,因为情况繁多。我个人建议最好直接下载 .whl 文件进行安装。

PyQt5 基础 GUI 开发实战

说了这么多,我们先来看一个我最近编写的实用工具,界面虽然简陋,但仅用了不到几个小时完成。


import sys,sip
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton,QCheckBox, QComboBox,QLineEdit
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt

class Exchange_of_weather_degree_units(QWidget):

 def __init__(self):
  super().__init__()
  self.setting()

 def setting(self):
  self.unit = None

  self.choice = QComboBox(self)
  self.choice.addItem('℃')
  self.choice.addItem('℉')
  self.choice.activated[str].connect(self.choice_)
  self.choice.move(50,15)

  self.number = QLineEdit(self)
  self.number.setPlaceholderText('输入转化的数值')
  self.number.move(15,50)

  self.arrowhead = QLabel(self)
  self.arrowhead.setText('——————>')
  self.arrowhead.setFont(QFont('microsoft Yahei', 20))
  self.arrowhead.move(165,20)

  self.result = QLabel(self)
  self.result.setText('       ')
  self.result.setFont(QFont('microsoft Yahei', 15))
  self.result.move(370, 27.5)

  self.yes = QPushButton('确定',self)
  self.yes.clicked.connect(self.yes_)
  self.yes.move(220,50)

  self.setGeometry(300, 100, 520, 100)
  self.setWindowTitle('摄氏度与华氏度的转换')
  self.show()

 def choice_(self,text):
  self.unit = text

 def yes_(self):
  try:
   if self.unit == '℃':
    result_ = eval(self.number.text()) * 1.8 + 32
    self.result.setText(str(result_) + '℉')

   if self.unit == '℉':
    result_ = round((eval(self.number.text()) - 32) / 1.8,6)
    self.result.setText(str(result_) + '℃')

   else:
    result_ = eval(self.number.text()) * 1.8 + 32
    self.result.setText(str(result_) + '℃')
  except:
   self.result.setText('请输入数字')
if __name__ == '__main__':
 app = QApplication(sys.argv)
 Ex = Exchange_of_weather_degree_units()
 sys.exit(app.exec_())

这是一个华氏度与摄氏度转换的小工具,对我个人而言非常实用。大家无需完全理解代码,直接复制运行查看效果即可。

其实这里涉及的知识并不多,大家不必担心。最基础的 PyQt5 框架结构如下:


import sys
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):

 def __init__(self):
  super().__init__()
  self.settings()
 def settings(self):
  self.setGeometry(300, 300, 450, 350)
  self.show()

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

当然,这仅是我认为的最简模式,实际上还可以更精简,但代码长度大致如此。因此大家无需感到害怕。

至于 Qt5 是什么,大家可以自行搜索。我可以告诉大家,这是一个非常强大且成熟的库,Qt 本身也是一种工具。如果有兴趣,可以添加我的 QQ 交流。

sys 标准库详解

讲完这些,我们现在来分析一下这个框架代码:

sys 库是一个标准库:

sys 库的作用:查看 python 解释器信息及传递信息给 python 解释器。 sys.argv:获取命令行参数列表,第一个元素是程序本身 sys.exit(n):退出 Python 程序,exit(0) 表示正常退出。当参数非 0 时,会引发一个 SystemExit 异常,可以在程序中捕获该异常 sys.version:获取 Python 解释程器的版本信息 sys.maxsize:最大的 Int 值,64 位平台是 2**63 - 1 sys.path:返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值 sys.platform:返回操作系统平台名称 sys.stdin:输入相关 sys.stdout:输出相关 sys.stderr:错误相关 sys.exc_info():返回异常信息三元元组 sys.getdefaultencoding():获取系统当前编码,默认为 utf-8 sys.setdefaultencoding():设置系统的默认编码 sys.getfilesystemencoding():获取文件系统使用编码方式,默认是 utf-8 sys.modules #以字典的形式返回所有当前 Python 环境中已经导入的模块 sys.builtin_module_names:返回一个列表,包含所有已经编译到 Python 解释器里的模块的名字 sys.copyright:当前 Python 的版权信息 sys.flags:命令行标识状态信息列表。只读。 sys.getrefcount(object):返回对象的引用数量 sys.getrecursionlimit():返回 Python 最大递归深度,默认 1000 sys.getsizeof(object[, default]):返回对象的大小 sys.getswitchinterval():返回线程切换时间间隔,默认 0.005 秒 sys.setswitchinterval(interval):设置线程切换的时间间隔,单位秒 sys.getwindowsversion():返回当前 windwos 系统的版本信息 sys.hash_info:返回 Python 默认的哈希方法的参数 sys.implementation:当前正在运行的 Python 解释器的具体实现,比如 CPython sys.thread_info:当前线程信息

这些内容部分参考了其他资料,但主要是通过查看 PyQt5 库本身的代码并翻译解释英文文档得出的成果。

接下来是解包操作,这部分应该没有问题。

然后创建 Example 类,继承自 QWidget。 PyQt5 有很多模块,其中 QWidget 就是一个模块,它包含了一系列创建桌面应用的 UI 元素。

下面的初始化代码应该没问题吧。 然后就是这个 self.setGeometry(300, 300, 450, 350),这个是设置窗口与屏幕左上角的距离与长宽。 这个大家改改数据就懂了。

然后是self.show(),这个是将界面显示出来。 最后是运行,if 那一个判断简单来说是这样的: 别的文档调用你的这个库时不会执行 if 里的代码。 然后 app 那一行大家就是所有的 PyQt5 应用必须创建一个应用(Application)对象。sys.argv 参数是一个来自命令行的参数列表。Python 脚本可以在 shell 中运行。这是我们用来控制我们应用启动的一种方法。

ex 是调用库,然后首先执行__init__的代码,然后__init__又调用了 settings,所以直接执行initUI里的程序。最后退出。

我们再改好看一点。


import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
 def __init__(self):
  super().__init__()
  self.settings()
  
 def setting(self):
  self.setWindowTitle(sys.argv[0])
  #self.setWindowIcon(QIcon('图片名.ico')) 自己加图片
  self.setGeometry(300, 300, 450, 350)
  self.show()

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

我们加了两行,在settings中的第一行,就是设置标题。第二行大家自行加 ico 图片,这样就会更丰富了。这个方法我就不列出来了,大家自己记住就好。

总结

总结

到此这篇关于 Python PyQt5 整理介绍的文章就介绍到这了,更多相关 Python PyQt5 介绍内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。