
PyQt6是Python应用开发的首选平台,本书包括PyQt6基础和PyQt6开发及实例两部分。PyQt6基础部分通过一个简单实例初步熟悉PyQt6的两种界面开发方式,然后介绍通用窗口、对话框(包括子类控件)和主窗口属性、方法、事件、信号和槽,在此基础上介绍布局管理、常用控件、容器布局、菜单栏、工具栏、状态栏、表格、树、拖曳与剪贴、绘图、二维及三维图表、定时器、线程和网页交互等。PyQt6开发及实例部分包括文档分析器、网上商城、我的美图、我的绘图板、简版微信和简版抖音。本书内容兼顾代码设计和工具设计,以代码设计为主。PyQt6基础部分所有实例均采用代码设计,PyQt6开发及实例部分一般界面采用工具设计,功能实现采用代码设计,与实际应用开发方式相同。实例侧重于综合应用,每一个实例都经过精心考虑,尽可能合理分配重要知识点和应用模块库,使其既体现主要知识的综合,又是一个简化的流行应用。实例没有严格的学习顺序,读者可以根据需要选择。本书网络资源包括源代码、学习课件、所有实例的工程文件包和对应的二维码文档,读者可通过电子工业出版社华信教育资源网免费下载。本书可作为PyQt6和Python学习与应用开发的参考书,也可作为教学参考书。
Python为目前最受欢迎的开源编程语言之一,目前最新的大版本是Python 3,小版本则不断更新,但Python自带的GUI库相对较弱,用它开发出合格的应用产品并不现实。Qt是目前流行的基于C++开源的编程环境和功能强大、使用方便的开发环境,PyQt是对Qt C++图形界面库的完全封装,几乎囊括了Qt所有的功能,利用PyQt能轻松开发出专业的图形界面,因此其成为了目前Python应用系统界面开发的首选。其流行版本包括PyQt4、PyQt5和PyQt6,PyQt6是最新版本。 PyQt6是由Riverbank Computing公司开发的基于Python的一系列多平台的工具包,可以在UNIX、Windows和Mac OS主流操作系统上运行。PyQt6有两个许可证,开发人员可以在GPL和商业许可之间进行选择。 PyQt6是Python应用开发的首选平台,虽然功能强大,但国内能够查到的资料却非常少,出版的技术书籍至今还没有。编者根据PyQt6应用实践及在Qt6和Python3教程开发中积累的经验,及时地推出本书,以方便读者学习。 一、内容安排 本书各章的主要知识点如下。 (1)第1章介绍一个简单实例,让读者熟悉在Python自带IDLE环境下用PyQt6开发GUI应用程序的入门知识,同时初步熟悉PyQt6的两种界面开发方式,最后介绍流行的PyCharm开发平台。 (2)第2章介绍通用窗口、对话框(包括子类控件)和主窗口的属性(界面选择和代码设置)、方法、事件、信号和槽,为后面章节内容的学习打好基础。 (3)第3~9章包括布局管理、常用控件、容器布局、菜单栏、工具栏、状态栏、表格、树、拖曳与剪贴、绘图、二维及三维图表、定时器、线程和网页交互。 (4)第10章开发文档分析器。这是一个典型的PyQt多文档应用程序,用树状视图对本地计算机操作系统的文件进行导航和分类,再调用各种流行的Python库实现对文档的分析,如pyttsx3朗读文字、jieba实现分词、wordcloud生成词云、爬虫beautifulsoup4模块获取网页主题链接、Tesseract库识别扫描书页中的文字等。 (5)第11章开发网上商城。这是一个典型的PyQt多窗口应用程序,对系统诸多应用功能采用了分包与模块化开发方法,商城销售数据存储于Excel(openpyxl操作),界面显示采用“模型-视图”机制,并运用QtCharts绘制精美的销售分析图表。 (6)第12章开发我的美图。这是参考Photoshop、美图秀秀功能的图像处理软件,综合运用PIL库的图像处理技术,实现图像模式转换、像素增强与滤波、多图合成、区域裁剪、重设比例、加水印等功能,还用OpenCV技术识别图片中的人脸,实现对面部模糊/清晰化处理、素描轮廓、呈现浮雕状和打马赛克等特效。 (7)第13章开发我的绘图板。基于PyQt的GraphicsView图形系统和鼠标事件响应系统,构建了一个方便的绘图软件。用户可拖曳工具箱按钮向场景中任意放置图形、拖曳调整大小、改变线型和填充色,绘制完成的画面以图元对象的形式保存为二进制文件,可再次打开和编辑。 (8)第14章开发简版微信。本例模仿微信电脑版桌面客户端,用GraphicsView图形系统实现微信的聊天界面和功能。使用的主要技术包括PyQt6网络模块QtNetwork以解决点对点消息通信问题、MongoDB转存聊天消息和资源、SQLite保存本地聊天历史记录。此外,本书还使用threading线程、PyAudio和wave模块实现语音聊天,以及TCP实时语音通话等功能。 (9)第15章开发简版抖音。这是一个自制的短视频软件,以实现抖音的基本功能,将视频作为GraphicsView图元处理,用PyQt6的QMediaPlayer实时播放;Qt定时器显示视频弹幕;结合PIL与OpenCV对要发布的视频进行编辑;视频录制采用QCamera/ QMediaRecorder/QMediaCaptureSession;采用moviepy给视频加背景音乐。用户上传的内容存储于后台MySQL数据库,其中存储了longblob类型的视频、blob类型的图片、集合set类型表示关注的视频作者、json类型表示用户偏好,软件可自动根据用户喜好推荐对应类别下的视频内容。 二、本书主要特点 (1)界面兼顾代码设计和工具设计,以代码设计为主。基础部分在窗口、布局管理章节介绍工具设计和代码设计。开发及实例部分的一般界面采用工具设计,功能实现采用代码设计,与实际应用开发方式相同。 (2)基础部分所有实例均采用代码设计,以方便读者学习、打牢基础。基础部分中的每个实例尽可能包含基本控件功能,方便相互配合,提高代码的效率。 (3)开发及实例部分侧重于综合应用,每一个实例经过精心考虑,尽可能合理分配重要知识点和应用模块库,使其既体现主要知识的综合,又是一个简化的流行应用。 (4)实例没有严格的学习顺序,读者可以根据需要选择。 (5)PyQt6与Python内容有机融合,有利于读者学习。 三、本书网络资源 (1)基础部分标注“例xxxx.py”的源代码程序均调试通过,运行结果与书中内容相同。 (2)每一章均配有学习课件,以方便读者学习,以及教学和培训。 (3)所有实例的工程文件包都包含资源文件,以方便读者学习。 (4)本书提供对应内容的二维码,通过扫描二维码,可以浏览文档内容。 本书配套资源可通过电子工业出版社华信教育资源网免费下载。 本书由郑阿奇(南京师范大学)主编,部分同志参加了编写和实例开发等工作,在此一并表示感谢! 由于编者水平有限,疏漏和错误在所难免,敬请广大师生、读者批评指正,意见和建议可反馈至编者电子邮箱easybooks@163.com。
第1章 PyQt6图形界面程序设计入门 1 1.1 第一个实例:采用代码计算圆面积 1 1.1.1 创建窗口 2 1.1.2 计算圆面积 3 1.2 第二个实例:采用设计器计算圆面积 7 1.2.1 工具的安装 7 1.2.2 界面开发 7 1.2.3 功能开发 13 1.3 PyQt6集成开发环境搭建 15 1.3.1 安装及配置PyCharm 15 1.3.2 PyCharm整合PyQt6界面设计工具 19 第2章 窗口 22 2.1 PyQt6窗口和应用程序 22 2.1.1 PyQt6界面设计环境:Qt Designer 22 2.1.2 应用程序类:QApplication 23 2.2 通用窗口QWidget 23 2.2.1 坐标系统和类 23 2.2.2 常用属性 25 2.2.3 事件 32 2.2.4 信号/槽 37 2.2.5 通用窗口实例 40 2.3 对话框QDialog 42 2.3.1 对话框属性 42 2.3.2 对话框实例 43 2.3.3 对话框子类控件 44 2.4 主窗口QMainWindow 53 2.4.1 主窗口属性 53 2.4.2 主窗口举例 55 第3章 布局管理 57 3.1 设计器中的控件对象布局 57 3.1.1 使用布局管理器布局 57 3.1.2 使用容器进行布局 59 3.1.3 弹性间隔控件布局 59 3.2 通过代码进行控件对象布局 61 3.2.1 布局方式 61 3.2.2 布局嵌套 66 3.2.3 其他布局方法 69 第4章 控件功能 71 4.1 控件及其继承类 71 4.1.1 控件分类 71 4.1.2 控件及其属性列表 71 4.1.3 控件类和继承类 72 4.2 常用控件 73 4.2.1 标签:Label 73 4.2.2 单行文本框:QLineEdit 76 4.2.3 多行文本框:QTextEdit 82 4.2.4 命令按钮:QPushButton 84 4.2.5 单选按钮:QRadioButton 86 4.2.6 复选框:QCheckBox 88 4.2.7 列表框:QListView 和QListWidget 89 4.2.8 下拉列表框:QComboBox 94 4.2.9 计数器:QSpinBox和 QDoubleSpinBox 96 4.2.10 日历:QCalendar 98 4.2.11 日期时间:QDateTimeEdit 100 4.3 滑动条、进度条、滚动条和旋钮控件 102 4.3.1 滑动条:QSlider 102 4.3.2 进度条:QProgressBar 104 4.3.3 滚动条:QScrollBar 106 4.3.4 旋钮:QDial 108 第5章 容器布局 110 5.1 控件容器布局 110 5.1.1 框架:QFrame 110 5.1.2 分组框:QGroupBox 113 5.1.3 选项卡:QTabWidget 115 5.2 窗口布局 118 5.2.1 堆栈窗口:QStackedWidget 118 5.2.2 停靠:QDockWidget 120 5.2.3 多文档界面:MDI 124 5.2.4 工具盒:ToolBox 127 第6章 菜单栏、工具栏和状态栏 130 6.1 菜单栏 130 6.1.1 菜单栏:QMenuBar类 130 6.1.2 菜单栏菜单:QMenu 131 6.1.3 动作对象:QAction 131 6.2 工具栏:QToolBar 136 6.3 状态栏:QStatusBar 138 6.4 主窗口综合测试实例 140 6.5 用Qt Designer设计菜单与工具栏 142 6.5.1 菜单项与QAction的创建 142 6.5.2 QAction的设计 144 6.5.3 添加工具栏与QAction 144 第7章 表格、树、拖曳与剪贴板 147 7.1 表格 147 7.1.1 表格:QTableView 147 7.1.2 表格:QTableWidget 149 7.2 树 159 7.2.1 树:QTreeView 159 7.2.2 树:QTreeWidget 163 7.3 拖曳与剪贴板 169 7.3.1 拖曳:Drag与Drop 169 7.3.2 剪贴板:QClipboard 171 第8章 绘图、二维及三维图表 174 8.1 基本图形绘制 174 8.1.1 绘图基础类 174 8.1.2 绘图方法 178 8.1.3 路径绘图 185 8.2 二维图表绘制 187 8.2.1 QtCharts基础 187 8.2.2 绘制函数曲线 189 8.2.3 绘制柱状/折线图 192 8.2.4 绘制饼状图 194 8.2.5 matplotlib绘图 196 8.3 三维图表绘制 197 8.3.1 QtDataVisualization基础 197 8.3.2 三维绘图实例 199 第9章 定时器、线程和网页交互 203 9.1 定时器和线程 203 9.1.1 定时器:QTimer 203 9.1.2 线程:QThread 204 9.2 网页交互 206 9.2.1 显示指定地址的网页 207 9.2.2 嵌入网页的HTML代码 208 9.2.3 嵌入网页的JavaSciprt代码 209 第10章 PyQt6开发实例:文档分析器 212 【技术基础】 212 【实例开发】 213 10.1 创建项目 213 10.1.1 项目结构 213 10.1.2 界面设计 213 10.1.3 主程序框架 216 10.2 文档的管理 218 10.2.1 目录导航 218 10.2.2 文档归类 219 10.2.3 打开文档 221 10.2.4 多文档窗口布局 222 10.3 文档的分析 224 10.3.1 文本文字的分析 225 10.3.2 获取网页主题链接 229 10.3.3 识别扫描书页文字 231 10.3.4 分析结果处理 235 10.4 其他功能 235 第11章 PyQt6开发及实例:网上商城 237 【技术基础】 237 【实例开发】 238 11.1 创建项目 238 11.1.1 数据准备 238 11.1.2 初步了解项目结构 239 11.2 功能导航模块 240 11.2.1 界面设计 240 11.2.2 功能开发 241 11.3 商品选购模块 242 11.3.1 界面设计 243 11.3.2 程序框架 244 11.3.3 功能开发 246 11.3.4 数据演示 250 11.4 下单结算模块 251 11.4.1 界面设计 251 11.4.2 程序框架 253 11.4.3 功能开发 254 11.4.4 数据演示 261 11.5 销售分析模块 262 11.5.1 界面设计 263 11.5.2 程序框架 264 11.5.3 功能开发 265 第12章 PyQt6开发及实例:我的美图 271 【技术基础】 271 12.1 PIL图像处理技术 271 12.1.1 图像载入(打开)与显示 272 12.1.2 基础处理 272 12.1.3 高级处理 274 12.2 用到的其他控件和技术 276 【实例开发】 276 12.3 创建项目 276 12.3.1 项目结构 276 12.3.2 界面创建 277 12.3.3 主程序框架 278 12.4 图片打开、显示和保存 280 12.4.1 图片打开和保存 281 12.4.2 图片自适应显示 282 12.5 图片区域选择与操作 283 12.5.1 区域形状设置 284 12.5.2 区域选择 286 12.5.3 区域操作 288 12.6 图像变换 291 12.6.1 转换显示模式 292 12.6.2 调整宽高像素比 293 12.6.3 镜像、旋转和缩放 295 12.6.4 图像加水印文字 296 12.7 图像美化 298 12.7.1 图像增强 299 12.7.2 图像合成 305 12.7.3 人脸识别与处理 308 第13章 PyQt6开发及实例:我的绘图板 312 【技术基础】 312 13.1 绘图相关技术 312 13.2 绘图场景数据结构 313 13.2.1 数据结构设计 313 13.2.2 数据结构处理 315 【实例开发】 316 13.3 创建项目 316 13.3.1 项目结构 316 13.3.2 主程序框架 317 13.4 主界面开发 318 13.4.1 界面设计 318 13.4.2 文件管理栏开发 320 13.4.3 样式栏开发 321 13.4.4 工具箱开发 325 13.4.5 绘图区和状态栏开发 326 13.5 绘图功能开发 328 13.5.1 创建图元 328 13.5.2 调整图元大小 333 13.5.3 设置样式 336 13.5.4 操纵图元 342 13.6 图元文件管理 343 第14章 PyQt6开发及实例:简版微信 349 【技术基础】 350 14.1 网络通信 350 14.1.1 基于UDP的数据通信 350 14.1.2 基于TCP的字节传输 353 14.2 MongoDB数据库 356 14.2.1 安装MongoDB 356 14.2.2 创建数据库MyWeDb 357 14.2.3 数据库访问与操作 357 14.3 SQLite应用 360 14.3.1 访问SQLite 361 14.3.3 记录日志 361 14.3.4 加载日志 362 14.4 用到的其他控件和技术 363 【实例开发】 363 14.5 创建项目 363 14.5.1 客户端项目 363 14.5.2 服务器项目 366 14.6 界面开发 368 14.6.1 界面设计 368 14.6.2 初始化 371 14.6.3 界面切换 372 14.7 微信基本功能开发 374 14.7.1 用户管理 374 14.7.2 文字聊天 377 14.7.3 信息暂存与转发 381 14.8 微信增强功能的开发 382 14.8.1 功能演示 383 14.8.2 文件、图片、语音的传输 385 14.8.3 实时语音通话 396 第15章 PyQt6开发及实例:简版抖音 401 【技术基础】 401 15.1 视频播放处理 401 15.2 MySQL数据库 402 15.2.1 设计数据库MyTikTok 402 15.2.2 数据库访问与操作 404 15.2.3 读写特殊数据类型 405 【实例开发】 405 15.3 创建项目 405 15.3.1 项目结构 405 15.3.2 主程序框架 406 15.4 主界面开发 407 15.4.1 界面设计 407 15.4.2 初始化 410 15.4.3 运行效果 411 15.5 视频基本功能开发 411 15.5.1 视频播放 411 15.5.2 视频控制 415 15.5.3 视频信息显示 416 15.6 特色功能开发 418 15.6.1 关注和点赞 418 15.6.2 评论与弹幕 422 15.6.3 根据用户喜好推荐视频 425 15.7 视频录制、编辑与发布 427 15.7.1 视频录制 427 15.7.2 视频编辑与发布 430 附录 PyQt6项目工程打包 442
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=TP455900