点击关注州的先生编程应用、实战教程,不容错过 在安装完成PyQt5/PySide2之后,我们先不急着开始进行Python图形界面的编程。因为现在我们对PyQt5和PySide2还一无所知。 PyQt5和PySide2都是QT图形界面开发包的Python封装模块,它们最大程度地利用Python编程语言还原了QT在原生C++下实现的功能和定义。所以我们使用PyQt5或是PySide2都可以较完整地在Python编程语言中完成QT的图形界面应用开发。 同时,由于PyQt5和PySide2的发展历史、授权协议等有所差异,所以我们在此建议大家对两者进行如下选择:
所以在《一看就懂的Python图形界面编程》系列教程中,为了方便演示,我们使用PyQt5进行知识点示例代码的讲解。如果有读者对PySide2的代码有需求,可以自行替换。 (对于大多数子模块而言,只需要简单的将模块引入中的PyQt5替换为PySide2即可,其他特殊模块则可以参考官网文档说明)。 在开始使用PyQt5/PySide2进行Python图形界面编程之前,我们先来了解一些我们即将使用的图形界面开发模块的结构。就像对房屋进行装修之前,只有对房屋的结构、构成有了了解,才能更好的进行施工。 PyQt5/PySide2作为一个大型的模块,不像一些小的模块只有极少数的子类和方法属性,其拥有大量的子模块、定义和对象,如果不对其全局的结构有一个了解,就会陷入不知从何开始的困局。 一、PyQt5/PySide2的子模块在安装完成PyQt5/PySide2之后,我们就可以在IDE或代码编辑器中通过from……import……,或直接的import对其进行引入使用了。 在IDE中使用from语法引入PyQt5/PySide2,代码如下所示: from PyQt5 import Q 如果你使用的IDE或代码编辑器有智能提示功能,那么就会显示PyQt5模块下的以Q开头的子模块,如下图所示: 因为QT模块的风格就是子模块都是Q开头,所以IDE智能提示中显示的子模块基本上包含了PyQt5中所有的子模块。 这些子模块包含但不限于以下模块: QtCore,QtWidgets,QtGui,QAxContainer,QtBluetooth,QtDBus,QtDesigner,QtHelp,QtLocation,QtMultimedia,QtMultimediaWidgets,QtNetwork,QtNetworkAuth,QtNfc,QtOpenGL,QtPositioning,QtPrintSupport,QtQml,QtQuick,QtQuickWidgets,QtRemoteObjects,QtSensors,QtSerialPort,QtSql,QtSvg,QtTest,QtWebChannel,QtWebSockets,QtWinExtras,QtXml,QtXmlPatterns 在这些模块中,大致可以分为以下几个类别:
下面我们分别来认识一下几类模块。 二、通用基础模块——房屋的基石在PyQt5的通用基础模块中,又分为核心基础模块和一般性基础模块。这个其实很好理解,核心基础模块,相当于一栋房子的地基、承重梁、水泥砖头等等,用于搭建起房屋的基本结构; 属于基础模块的子模块有以下模块:
上述的三个子模块,是PyQt5中传统图形界面程序编程涉及到的核心模块。 注意:我们知道,原生的Qt使用的是C++语言进行图形界面的开发,从Qt4.7开始,Qt中引入了一种新的图形界面开发语言——QML作为原生QT开发语言C++的替代品,同时其构建了一套名为QtQuick的类库,用于使用自定义图形界面来构建高度动态的图形界面应用程序。 其属于Qt开发的另一个分支,Qt的Python封装包中也包含了相关的模块支持,但是在本系列教程中,我们只使用传统Qt图形界面开发的模块。 我们再来看看功能模块。 三、功能模块——扩展房屋属性在功能模块中,也分为基础功能模块和其他功能模块。 基础功能模块,其重要程度低于核心基础模块,但是又高于其他功能模块。随着时代的发展,需求的变动,一个功能模块可能会升级为基础功能模块,也有可能降级为其他功能模块。同理,一个其他功能模块也有可能变为基础功能模块。 就像几十年前,家家户户通上电是一个追求的目标,网络也只是家庭才有的配置。而现在,每家每户都有电,并且网络已经成为了标配。 在当前版本,基础功能模块包含了如下模块:
上述两个功能模块都是用来实现多媒体功能的。
上面我们说过,基础功能模块和其他功能模块就像电和网络一样,在不同的时期的重要性会有不同的变化。 无论其变化几何,这些模块终究是为了扩展图形界面程序的功能而生。下面我们来看看PyQt5中的部分其他功能模块:
对功能模块的细分并不需要特别严谨,因为从某种程度而言,除了核心模块之外的模块都属于功能模块。核心模块用于打好图形界面程序的基础,功能模块无论是基础功能还是其他功能,都是用于实现图形界面程序的功能,一个定义为其他功能模块的模块在自己的图形界面编程过程中的使用频率和重要程度都高于一个基础功能模块。所以大家灵活运用即可。 四、工具模块Qt的工具模块主要是为了方便开发人员对图形界面程序进行设计和开发,其提供了Qt设计师(QtDesigner)这个图形化的程序设计工具,能够便捷地利用鼠标拖拽来快速绘制程序的界面和基础的事件响应。 为了便于大家对PyQt5各个模块代码的理解,本系列教程将不使用Qt设计师来设计和绘制图形界面,有需要的读者可以自行下载安装使用QT设计师。 五、其他模块上述几个小节内容中介绍的模块并没有列出Qt的所有模块来,在Qt的官方文档上其有一个链接列出了所有的模块的介绍,有需要的读者可以前往查阅:https://doc.qt.io/qt-5/qtmodules.html 同时,由于Qt的Python封装包(PyQt5和PySide2)对Qt模块API的封装并非全部移植封装,两个包中都存在缺少原生Qt模块的情况。在Qt for Python的文档上,同样也列出了PySide2中包含的所有模块,有需要的读者可以前往查阅:https://doc.qt.io/qtforpython/modules.html 正文结束 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:州的先生,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |