1.PyQt5包括的主要模块以下。python
- QtCore模块——涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及的时间、文件、目录、数据类型、文本流、连接、QMimeData、线程或进程等对象。
- QtGui模块——涵盖了多种基本图形功能的类,包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面、字体和文本类。
- QtWidgets模块——包含了一整套UI元素控件,用于创建符合系统风格的Classic界面,很是方便,能够在安装时选择是否使用此功能。
- QtMultimedia模块——包含了一套类库,用于处理多媒体事件,经过调用API接口访问摄像头、语音设备、收发消息(Radio Functionality)等。
- QtBluetooth模块——包含了处理蓝牙活动的类库,其功能包括:扫描设备、链接、交互等行为。
- QtNetwork模块——包含了用于进行网络编程的类库,经过提供便捷的TCP/IP及UDP的C/S代码集合,使得基于Qt的网络编程更容易。
- QtPositioning模块——用于获取位置信息,此模块容许使用多种方式实现定位,包括但不限于:卫星、无线网、文字信息。此模块通常用在网络地图定位系统中。
- Enginio模块——用于构建客户端的应用程序库,在运行时访问Qt Cloud 服务器托管的应用程序。
QtWebSockets模块——包含了一组类程序,用于实现WebSocket协议。
QtWebKit模块——包含了用于实现基于WebKit2的网络浏览器的类库。
- QtWebKitWidgets模块——提供了一组类库,用于实现一种由Widgets包构建的、基于WebKit1的网络浏览器。
- QtXml模块——包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了函数。
- QtSvg模块——经过一组类库,为显示矢量图形文件的内容提供了函数。
- QtSql模块——提供了数据库对象的接口以供使用。
- QtTest模块——包含了经过单元测试,调试PyQt5应用程序的功能。
- QtHelp模块——包含了用于建立和查看可查找的文档的类。
- QtOpenGL模块——使用OpenGL库来渲染3D和2D图形。该模块使得Qt GUI库和OpenGL库无缝集成。
- QtXmlPatterns模块——所包含的类实现了对XML和自定义数据模型的Xquery与XPath的支持。
- QtDesigner模块——所包含的类容许使用PyQt扩展Qt Designer。
- Qt模块——将上面模块中的类综合到一个单一的模块中。这样作的好处是你不用担忧哪一个模块包含了哪一个特定的类;坏处是加载到整个Qt框架中,从而增长了应用程序的内存占用。
-
uic模块——所包含的类用来处理.ui文件,该文件由Qt Designer建立,用于描述整个或者部分用户界面。它能够将.ui文件编译为.py文件,以便其余Python程序调用。
PyQt5增长了不少模块,能够去官方网站查看,基本上看模块名字就知道大概用处了。PyQt5已经没有phonon模块了,使用QtMultimedia来处理媒体。
另外,PyQt5新增的QtWebEngineWidgets模块替代了过期的QtWebKit,可是QtWebKit还在,而新模块更耗内存,具体使用哪一个由读者本身决定。shell
2 .PyQt 5主要类介绍
PyQt5 API拥有620多个类和6000个函数。它是一个跨平台的工具包,能够运行在全部主流的操做系统上,包括Windows、Linux和Mac OS。
- QObject类:在类层次结构中是顶部类(Top Class),它是全部PyQt对象的基类。
- QPaintDevice类:全部可绘制的对象的基类。
- QApplication类:用于管理图形用户界面应用程序的控制流和主要设置。它包含主事件循环,对来自窗口系统和其余资源的全部事件进行处理和调度;它也对应用程序的初始化和结束进行处理,而且提供对话管理;还对绝大多数系统范围和应用程序范围的设置进行处理。
- QWidget类:全部用户界面对象的基类。QDialog类和QFrame类继承自QWidget类,这两个类有本身的子类系统(Sub-Class System)。
- QFrame类:有框架的窗口控件的基类。它也被用来直接建立没有任何内容的简单框架,可是一般要用到QHBox或QVBox,由于它们能够自动布置放到框架中的窗口控件。
- QMainWindow类:提供一个有菜单栏、锚接窗口(如工具栏)和状态栏的主应用程序窗口。
-
QDialog类:最普通的顶级窗口。若是一个窗口控件没有被嵌入到父窗口控件中,那么该窗口控件就被称为顶级窗口控件。在一般状况下,顶级窗口控件是有框架和标题栏的窗口。在Qt中,QMainWindow和不一样的QDialog的子类是最普通的顶级窗口。
图A-2至图A-6展现了PyQt 5中重要的类及其继承关系。



上面的类图是使用UML建模工具Edraw UML Diagram绘制的。好比在图A-2所示的类图中,每个方框表明一个PyQt 5的类,在方框的第一行显示的是类名,方框之间经过符号表示类与类之间的继承关系。继承指的是一个类(称为子类)继承另外一个类(称为父类)的功能,经过继承能够增长子类的新功能。
下面是经常使用的控件。数据库
- QLabel控件:用来显示文本或图像。
- QLineEdit窗口控件:提供了一个单页面的单行文本编辑器。
- QTextEdit窗口控件:提供了一个单页面的多行文本编辑器。
- QPushButton窗口控件:提供了一个命令按钮。
- QRadioButton控件:提供了一个单选钮和一个文本或像素映射标签。
- QCheckBox窗口控件:提供了一个带文本标签的复选框。
- QspinBox控件:容许用户选择一个值,要么经过按向上/向下键增长/减小当前显示值,要么直接将值输入到输入框中。
- QScrollBar窗口控件:提供了一个水平的或垂直的滚动条。
- QSlider控件:提供了一个垂直的或水平的滑动条。
- QComboBox控件:一个组合按钮,用于弹出列表。
- QMenuBar控件:提供了一个横向菜单栏。
- QStatusBar控件:提供了一个适合呈现状态信息的水平条,一般放在QMainWindow的底部。
- QToolBar控件:提供了一个工具栏,能够包含多个命令按钮,一般放在QMainWindow的顶部。
- QListView控件:能够显示和控制可选的多选列表,能够设置ListMode或IconMode。
- QPixmap控件:能够在绘图设备上显示图像,一般放在QLabel或QPushButton类中。
-
Qdialog控件:对话框窗口的基类。
QWidget是全部用户界面类的基类,它能接收全部的鼠标、键盘和其余系统窗口事件。没有被嵌入到父窗口中的Widget会被看成一个窗口来调用,固然,它也可使用setWindowFlags(Qt.WindowFlags)函数来设置窗口的显示效果。QWidget的构造函数能够接收两个参数,其中第一个参数是该窗口的父窗口;第二个参数是该窗口的Flag,也就是Qt.WindowFlags。根据父窗口来决定Widget是嵌入到父窗口中仍是被看成一个独立的窗口来调用,根据Flag来设置Widget窗口的一些属性。
QMainWindow(主窗口)通常是应用程序的框架,在主窗口中能够添加所须要的Widget,好比添加菜单栏、工具栏、状态栏等。主窗口一般用于提供一个大的中央窗口控件(如文本编辑或者绘制画布)以及周围的菜单栏、工具栏和状态栏。QMainWindow经常被继承,这使得封装中央控件、菜单栏,工具栏以及窗口状态变得更容易,也可使用Qt Designer来建立主窗口。编程
3. QApplication类
QApplication类用于管理图形用户界面应用程序的控制流和主要设置,能够说QApplication是PyQt的整个后台管理的命脉。任何一个使用PyQt开发的图形用户界面应用程序,都存在一个QApplication对象。
在PyQt中,能够经过以下代码载入必需的模块,得到QApplication类。
from PyQt5.QtWidgets import QApplication
在PyQt的应用程序实例中包含了QApplication类的初始化,一般放在Python脚本的if name == "main": 语句后面,相似于放在C的main函数里,做为主程序的入口。由于QApplication对象作了不少初始化,因此它必须在建立窗口以前被建立。
QApplication类还能够处理命令行参数,在QApplication类初始化时,须要引入参数sys.argv。sys.argv是来自命令行的参数列表,Python脚本能够从shell运行,好比用鼠标双击qtSample.py,就启动了一个PyQt应用程序。引入sys.argv后就能让程序从命令行启动,好比在命令行中输入 python qtSample.py,也能够达到一样的效果。
QApplication类的初始化能够参考如下脚本引用。应用程序总体框架为:
if name == "main":
app = QApplication(sys.argv)
# 界面生成代码 ...浏览器
sys.exit(app.exec_())
sys.exit()函数能够结束一个应用程序,使应用程序在主循环中退出。
QApplication采用事件循环机制,当QApplication初始化后,就进入应用程序的主循环(Main Loop),开始进行事件处理,主循环从窗口系统接收事件,并将这些事件分配到应用程序的控件中。当调用sys.exit()函数时,主循环就会结束。
PyQt 5的应用程序是事件驱动的,好比键盘事件、鼠标事件等。在没有任何事件的状况下,应用程序处于睡眠状态。主循环控制应用程序何时进入睡眠状态,何时被唤醒。服务器