PySide 6/PyQt 6快速开发与实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

Python是应用最广泛、最简单的编程语言之一,Qt是最好的桌面程序开发库之一。PyQt是Python与Qt结合的产物。PyQt借助Qt和Python两大生态,一诞生就广受欢迎,可以说是Python中应用最广泛的桌面程序开发(GUI)库。由于PyQt是Python与Qt的结合,因此它既可以利用Python强大而又简洁的语法和强大的生态,又不会丢失Qt强大的功能。

事实上,PyQt是第三方提供的Qt for Python绑定,而Qt官方提供的Python绑定为PySide。PySide的第一个版本在2018年发布,是基于Qt 5.11的PySide 2。PyQt最早的版本可以追溯到1998年的PyQt 0.1,当前最新版本为PyQt 6(截至2022年8月,最新版本基于Qt 6.3),并且实现了PyQt与Qt的同步更新。随着PySide 2的逐渐完善,我们有了除PyQt之外的另一个选择,在此之前基本上只会选择PyQt。PySide和PyQt都是Qt对Python的绑定,两者绝大部分的方法和用法都一样,并且两者之间的代码相互转换也非常容易,对于初学者来说随便选取一种学习即可。学习PySide 6/PyQt 6的好处是原来PySide 2/PyQt 5的绝大部分案例都能用,少部分代码在进行微调以后就能运行。因此,对于想要学习GUI的读者来说,从PySide 6/PyQt 6开始是最好的选择。

本书既可以说是《PyQt 5快速入门与实战》的第2版,也可以说是一本新书。与《PyQt 5快速入门与实战》相比,本书增加了很多新的知识点,包含了初学者学习PySide 6/PyQt 6需要掌握的绝大多数内容。

在开始撰写本书时,PySide生态已经非常完善,PySide 6比PyQt 6的更新速度更快。本书提供了PySide 6和PyQt 6两套源代码,所以本书命名为《PySide 6/PyQt 6快速开发与实战》。读者可以把本书作为PySide 6/PyQt 6的小百科,因为本书涉及PySide 6/PyQt 6绝大多数常用的知识点,并且内容足够丰富。如果读者想快速入门PySide/PyQt,那么本书绝对可以满足你的需求。

经过一年多的不懈努力,本书终于得以出版,希望能够帮助更多的朋友快速掌握PySide 6/PyQt 6开发技术,少走弯路,节约时间成本。在笔者最初接触PyQt的时候,查找各种资料非常痛苦,因此让更多的人减轻这种痛苦是笔者完成本书最大的动力。本书若能帮助更多的读者快速入门PySide 6/PyQt 6,将是笔者莫大的荣幸。

本书结构

本书共9章,包含PySide 6/PyQt 6常用知识及一些经典的应用。每章的侧重点不同,并且相对独立,读者根据目录即可获取自己所需的内容。

第1章介绍PySide/PyQt的入门知识,主要介绍PySide和PyQt的基本概念、PySide 6/PyQt 6的安装和使用(包括Qt Designer等工具的初步用法)、常见IDE(PyCharm、VSCode、Eric 7)的安装、配置与使用。已经有一定基础的读者可以略过本章。

第2章介绍Qt Designer的详细用法。Qt Designer是PySide/PyQt的可视化界面编辑程序,通过拖曳鼠标等可视化操作就可以快速开发出GUI文件(*.ui文件),可以通过官方提供的uic工具把.ui文件自动转换为.py文件。本章介绍了PySide/PyQt程序开发流程,如布局管理、信号与槽关联、菜单栏与工具栏、添加与转换资源文件等。对于PySide/PyQt初学者来说,这些是实现快速入门和快速进步的重要内容。

第3章和第4章介绍PySide/PyQt的基本窗口控件的使用方法。第1章介绍了PySide/PyQt的环境配置,第2章介绍了PySide/PyQt完整的开发流程,接下来读者最想知道的是PySide/PyQt有哪些常用控件和如何使用这些控件,这就是第3章和第4章要解决的问题。

第5章介绍PySide/PyQt的特殊控件——表格与树。本章主要介绍表格与树的用法,入门非常简单。如果想要更进一步,还需要理解Model/View/Delegate(模型/视图/委托)框架,这也是表格与树的特殊之处。此外,数据量较大的表格往往需要数据库的支撑,所以本章会涉及数据库的相关内容。

第6章介绍一些高级窗口控件。本章主要介绍第3~5章没有涉及的其他常用控件或内容,这也是介绍控件的最后一章。本章介绍的控件相对高级一些,比较常用的是布局管理与多窗口控件(容器)。本章还介绍了窗口风格、多线程、网页交互、QSS的UI美化等内容,最后以Qt Quick(QML)收尾。

第7章介绍信号/槽和事件。本章对PySide/PyQt的高级内容进行收尾,是介绍PySide/PyQt框架的最后一部分内容。前面几章初步介绍了信号/槽的使用方法,但不够详细,本章会对信号/槽和事件进行系统性的介绍,如内置信号/槽、自定义信号/槽、装饰器信号/槽、信号/槽的断开与连接、多线程信号/槽、事件处理的常用方法等。

第8章介绍Python的扩展应用。第1~7章介绍的是PySide/PyQt框架的内容,本章介绍Python对PySide/PyQt的扩展。学习PySide/PyQt的一大好处是可以结合Python生态提高开发效率。Python生态非常多,本章只介绍部分常用生态,如PyInstaller、Pandas、Matplotlib、PyQtGraph和Plotly等,使用这些生态可以更快地开发出GUI程序。

第9章介绍PySide/PyQt的实战应用。本章介绍了两个应用供读者参考,一个是在量化投资中的应用,另一个是在券商投研中的应用。

此外,本书的附录内容也很重要。

附录A介绍PySide/PyQt各个版本之间相互转换的问题,主要包括以下两部分内容。

● PySide 6/PyQt 6之间的相互转换。

● 将PySide 2/PyQt 5转换为PySide 6/PyQt 6。

附录B通过一个案例来分析如何把Qt的C++代码转换为PySide/PyQt的Python代码。Qt的生态比PySide/PyQt更丰富一些,有时需要把Qt的demo转换成PySide/PyQt的demo,读者可以参考这部分内容。

附录C列举一些常用表格目录。本书将很多枚举、属性和函数参数等的用法以表格的形式呈现,绝大部分表格可以根据目录快速定位到,比较常用但又没有办法快速定位到的在这里以表格形式列出。

附录D列举一些笔者了解的基于PySide/PyQt的优秀开源项目。本书只会对这些项目进行简单介绍,感兴趣的读者可自行研究。

本书源代码和附赠内容

本书提供了PySide 6和PyQt 6两套源代码,这两套源代码在Gitee或GitHub官网上都可以查到(打开Gitee或GitHub官网,搜索关键字sunshe35/PyQt6-codes或sunshe35/PySide6-codes)。源代码在Gitee和GitHub官网上会同步更新,国内用户访问Gitee官网的速度会更快一些。若读者运行本书代码存在困难,可参考源代码readme.md文件中的运行环境部分。

此外,本书剥离出部分章节的内容,以附赠电子版的形式呈现。附赠电子版与源代码放在一起,路径名称为“appendix/《PySide 6-PyQt 6快速开发与实战》附赠电子版.pdf”,也可以扫描封底二维码索取。

本书读者

本书适合具有一定Python基础并且对Python桌面程序开发感兴趣的读者阅读。只要读者掌握了Python的基本语法就可以阅读本书,同时在学习PySide 6/PyQt 6的过程中又可以加深与巩固Python基础知识。本书结构合理,内容充实,适合对Python、Qt和PySide/PyQt编程感兴趣的科教人员和广大计算机编程爱好者阅读,也可以作为相关机构的培训教材。

为了方便读者交流,笔者为本书建立了QQ群(群号:588695379),欢迎读者入群交流。祝广大读者学习顺利、事业有成。

致谢

本书得以出版要特别感谢电子工业出版社的黄爱萍,她在选题策划和稿件整理方面为笔者提供了很多建议。感谢生活与工作中的朋友与同事的理解和支持。祝愿每个朋友、同事及读者身体健康、心想事成、财源广进。

孙洋洋

2022年10月1日