PyQt是一个创建GUI应用程序的工具包,是Python编程语言和Qt库的成功融合。本书旨在通过深入浅出的讲解和简明的程序示例教读者掌握PyQt的开发技巧。
本书分为10章,从PyQt的安装和基础知识讲起,陆续介绍了基础控件(如标签控件、消息框、文本框、按钮及控件等)、高级控件(如组合框、滚动条、容器控件及各类视图等)、窗口(如属性、坐标、事件等)、Qt Designer(如安装与配置、编辑模式等)、PyQt高级应用(如数据库、多线程、动画、音视频、网页交互等)、图形视图框架(如图元、场景、视图、事件传递等)、打包(如PyInstaller、Nuitka等)等内容。此外,本书还通过两个开发实例(可视化爬虫软件和《经典贪吃蛇》游戏)带领读者巩固了书中介绍的相关知识点。
本书内容简洁实用、实操性强,适合对Python编程及GUI开发感兴趣的读者阅读。
1.内容通俗易懂
本书对新手读者非常友好,从安装配置环境开始讲解,通过大大小小的代码示例演示了各个PyQt模块的开发技巧。
2.代码示例丰富
本书囊括了丰富的代码示例,并结合详细的注释语句帮助读者掌握编程技巧。此外,本书还有两个完整的开发实例(可视化爬虫软件和《经典贪吃蛇》游戏),能够帮助读者前面巩固所学知识点。
3.提供全书源码和社群答疑
本书提供全部源码资源,还提供配套的QQ社群,帮助读者解惑答疑。具体信息可参见书中前言提示。
任路顺,一名热爱代码的开源开发者,也是开源软件 Qt Box 的作者。他拥有多年Python/C++ 开发经验,专注于软件开发,也喜欢研究爬虫、机器学习等技术,业余时间喜欢开发一些小游戏。他在CSDN和知乎平台上发布的《快速掌握 PyQt5》《树莓派项目实战》《PyInstaller 打包实战指南》等专栏受到读者的广泛好评。
第 1章 PyQt基础知识 1
1.1 安装PyQt 1
1.1.1 在不同系统上安装 1
1.1.2 验证安装是否成功 3
1.2 设计一个简单的PyQt窗口 3
1.2.1 程序入口 3
1.2.2 在PyQt程序中嵌入HTML代码 4
1.2.3 在类中创建窗口 5
1.3 布局管理 6
1.3.1 使用move()方法布局 7
1.3.2 垂直布局管理器QVBoxLayout 8
1.3.3 水平布局管理器QHBoxLayout 9
1.3.4 表单布局管理器QFormLayout 10
1.3.5 网格布局管理器QGridLayout 11
1.3.6 布局嵌套 12
1.4 信号和槽 13
1.4.1 理解信号和槽机制 13
1.4.2 一个信号连接一个槽 14
1.4.3 一个信号连接多个槽 17
1.4.4 多个信号连接一个槽 18
1.4.5 信号与信号连接 19
1.4.6 自定义信号 20
1.5 学会使用文档 22
1.5.1 理解文档上的C++代码 22
1.5.2 如何使用文档 23
1.6 本章小结 25
第 2章 PyQt的基础控件 26
2.1 标签控件QLabel 26
2.1.1 显示文本 26
2.1.2 显示图片 27
2.1.3 显示动图 28
2.2 消息框控件QMessageBox 30
2.2.1 各种类型的消息框 30
2.2.2 与消息框交互 32
2.2.3 编写带中文按钮的消息框 33
2.3 文本框控件 34
2.3.1 单行文本框控件QLineEdit 34
2.3.2 文本编辑框控件QTextEdit 36
2.3.3 文本浏览框控件QTextBrowser 38
2.4 各种按钮控件 39
2.4.1 普通按钮控件QPushButton 39
2.4.2 工具按钮控件QToolButton 40
2.4.3 单选框按钮控件QRadioButton 41
2.4.4 复选框按钮控件QCheckBox 42
2.4.5 下拉框按钮控件QComboBox 43
2.5 与数字相关的控件 45
2.5.1 液晶数字控件QLCDNumber 45
2.5.2 数字调节框控件QSpinBox和QDoubleSpinBox 46
2.5.3 滑动条控件QSlider 47
2.5.4 仪表盘控件QDial 48
2.6 与日期相关的控件 49
2.6.1 日历控件QCalendarWidget 49
2.6.2 日期时间控件QDateTimeEdit 51
2.7 定时器控件和进度条控件 53
2.7.1 定时器控件QTimer 53
2.7.2 进度条控件QProgressBar 54
2.8 本章小结 55
第3章 PyQt的高级控件 56
3.1 组合框控件和工具箱控件 56
3.1.1 分组框控件QGroupBox 56
3.1.2 工具箱控件QToolBox 57
3.2 滚动区域控件和滚动条控件 59
3.2.1 滚动区域控件QScrollArea 59
3.2.2 滚动条控件QScrollBar 61
3.3 更多容器控件 63
3.3.1 拆分窗口控件QSplitter 63
3.3.2 标签页控件QTabWidget 64
3.3.3 堆栈控件QStackedWidget 66
3.3.4 多文档区域控件QMdiArea 67
3.4 列表视图控件、树形视图控件、表格视图控件 69
3.4.1 列表视图控件QListView 70
3.4.2 树形视图控件QTreeView 72
3.4.3 表格视图控件QTableView 73
3.5 简化版的列表、树形、表格视图控件 75
3.5.1 简化版列表视图控件QListWidget 75
3.5.2 简化版树形视图控件QTreeWidget 76
3.5.3 简化版表格视图控件QTableWidget 78
3.6 各种对话框控件 79
3.6.1 颜色对话框控件QColorDialog 79
3.6.2 字体对话框控件QFontDialog 81
3.6.3 输入对话框控件QInputDialog 82
3.6.4 文件对话框控件QFileDialog 84
3.7 本章小结 86
第4章 深入窗口 87
4.1 窗口属性 87
4.1.1 窗口标题和图标 88
4.1.2 窗口大小和位置 88
4.1.3 其他窗口属性 91
4.2 窗口坐标 93
4.2.1 理解坐标体系 93
4.2.2 窗口的组成部分 94
4.3 窗口事件 95
4.3.1 窗口关闭事件 95
4.3.2 窗口大小调整事件 96
4.3.3 键盘事件 97
4.3.4 鼠标事件 98
4.3.5 拖放事件 100
4.3.6 绘制事件 102
4.4 主窗口类QMainWindow 103
4.4.1 主窗口的组成部分 103
4.4.2 停靠窗口类QDockWidget 105
4.4.3 菜单栏类QMenuBar 107
4.4.4 工具栏类QToolBar 108
4.4.5 状态栏类QStatusBar 110
4.4.6 程序启动画面类QSplashScreen 112
4.5 本章小结 113
第5章 Qt Designer 114
5.1 安装与配置 114
5.1.1 在Windows系统上安装 114
5.1.2 在macOS系统上安装 115
5.1.3 在Ubuntu系统上安装 115
5.1.4 在PyCharm中配置设计师 116
5.2 了解设计师窗口中的各个部分 117
5.2.1 控件箱 118
5.2.2 对象查看器 118
5.2.3 属性编辑器 119
5.2.4 菜单栏和工具栏 119
5.3 4种编辑模式 121
5.3.1 布局模式 121
5.3.2 编辑信号和槽模式 123
5.3.3 编辑伙伴关系模式 125
5.3.4 编辑Tab顺序模式 126
5.4 登录框开发实战 127
5.4.1 编辑属性 127
5.4.2 布局控件 129
5.4.3 将.ui文件转换成.py文件 130
5.4.4 编写功能逻辑代码 130
5.5 本章小结 131
第6章 PyQt高级应用 132
6.1 数据库 132
6.1.1 数据库连接和关闭 133
6.1.2 执行SQL语句 134
6.1.3 数据库模型 136
6.2 多线程 139
6.2.1 使用QThread线程类 140
6.2.2 在线程中获取窗口数据信息 143
6.2.3 编写一个简单的爬虫程序 144
6.3 绘图与打印 146
6.3.1 画笔类QPen 146
6.3.2 画刷类QBrush 149
6.3.3 用鼠标在窗口上绘制矩形 150
6.3.4 打印 153
6.4 动画 155
6.4.1 属性动画类QPropertyAnimation 155
6.4.2 串行动画组类QSequentialAnimationGroup 158
6.4.3 并行动画组类QParallelAnimationGroup 160
6.4.4 时间轴类QTimeLine 162
6.5 音频和视频 164
6.5.1 声音类QSound 164
6.5.2 音效类QSoundEffect 165
6.5.3 媒体播放机类QMediaPlayer 166
6.6 网页交互 170
6.6.1 了解QWebEngineView 170
6.6.2 制作一款简单的浏览器 172
6.7 网络应用 175
6.7.1 QUdpSocket 175
6.7.2 QTcpSocket和QTcpServer 180
6.8 QSS 183
6.8.1 安装QSS高亮插件 185
6.8.2 基本规则 185
6.8.3 选择器的类型 187
6.8.4 子控制器 189
6.8.5 伪状态 190
6.8.6 QSS第三方库 191
6.9 国际化 193
6.9.1 使用translate()方法 193
6.9.2 制作.ts文件 194
6.9.3 使用Qt Linguist 196
6.9.4 实现语言切换功能 198
6.10 本章小结 199
第7章 图形视图框架 200
7.1 图形图元类QGraphicsItem 200
7.1.1 标准图元 200
7.1.2 图元层级 203
7.1.3 图元变换 205
7.1.4 图元分组 206
7.1.5 碰撞检测 208
7.1.6 给图元添加信号和动画 209
7.2 图形场景类QGraphicsScene 211
7.2.1 管理图元 211
7.2.2 嵌入控件 212
7.3 图形视图类QGraphicsView 214
7.3.1 视图和场景的大小关系 215
7.3.2 视图变换 216
7.4 事件传递与坐标转换 217
7.4.1 事件传递顺序 217
7.4.2 坐标转换 219
7.5 本章小结 221
第8章 打包 222
8.1 PyInstaller 222
8.1.1 环境配置 222
8.1.2 两种打包模式 223
8.1.3 黑框的调试作用 225
8.1.4 给可执行文件加上图标 226
8.1.5 打包资源文件 226
8.1.6 减小打包后的文件大小 228
8.1.7 其他常用的命令 230
8.1.8 用PyInstaller打包用PyQt开发的程序 232
8.2 Nuitka 234
8.2.1 环境配置 234
8.2.2 两种打包模式 237
8.2.3 给可执行文件加上图标 239
8.2.4 打包资源文件 240
8.2.5 启用插件 242
8.2.6 减小打包文件的大小 243
8.2.7 其他常用的命令 244
8.2.8 用Nuitka打包用PyQt开发的程序 246
8.3 本章小结 247
第9章 开发可视化爬虫软件 248
9.1 实现爬虫功能 249
9.1.1 分析目标网站 249
9.1.2 编写爬虫代码 250
9.2 将爬虫与界面结合 252
9.2.1 完成界面布局 252
9.2.2 编写爬虫线程 254
9.2.3 在界面上显示爬取数据和日志 257
9.2.4 实现保存功能 259
9.3 音效与美化 262
9.3.1 添加音效 262
9.3.2 美化界面 263
9.4 打包 264
9.4.1 用PyInstaller打包 264
9.4.2 用Nuitka打包 265
9.5 本章小结 266
第 10章 开发《经典贪吃蛇》游戏 267
10.1 编写游戏场景 268
10.1.1 绘制背景和贪吃蛇图标 269
10.1.2 绘制分数 270
10.1.3 绘制可移动区域和边框 271
10.1.4 绘制“暂停”和“继续”按钮 272
10.1.5 绘制游戏失败提示 274
10.1.6 在视图窗口中显示场景 275
10.2 加入食物和贪吃蛇 277
10.2.1 在场景中添加食物 277
10.2.2 在场景中添加贪吃蛇 279
10.2.3 如何让贪吃蛇动起来 283
10.3 实现剩余的游戏逻辑 284
10.3.1 用方向键控制贪吃蛇 284
10.3.2 重新开始、暂停和继续 286
10.3.3 播放音频 287
10.4 打包 289
10.4.1 用PyInstaller打包 289
10.4.2 用Nuitka打包 290
10.5 本章小结 291