PyQT5 背景
Qt(音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。
但Qt 是纯 C++ 开发的
PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成。
PyQt5的官方网站是:
https://www.riverbankcomputing.com/static/Docs/PyQt5/
常用模块
PyQt5的类别分为几个模块,包括:
- QtCore:包含非核心的GUI功能,此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程
- QtGui:包括窗口系统集成、事件处理、二维图形、基本成像、字体和文本
- QtWidgets:基本控件都位于pyqt5.qtwidgets模块中,模块包含创造经典桌面风格的用户界面提供了一套UI元素的类
- QtMultimedia:包括的类来处理多媒体内容和API来访问相机和录音机的功能
- Qtbluetooth:模块包含类的扫描设备和连接并与他们互动。描述模块包含了网络编程的类。这些类便于TCP和IP和UDP客户端和服务器的编码,使网络编程更容易和更便携。
- Qtpositioning:包含类的利用各种可能的来源,确定位置,包括卫星、Wi-Fi、或一个文本文件。
- Enginio:模块实现了客户端库访问Qt云服务托管的应用程序运行时。
- Qtwebsockets:模块包含实现WebSocket协议类。
- QtWebKit:包含一个基于Webkit2图书馆Web浏览器实现类。
- Qtwebkitwidgets:包含的类的基础webkit1一用于qtwidgets应用Web浏览器的实现。
- QtXml:包含与XML文件的类。这个模块为SAX和DOM API提供了实现。
- QtSvg:模块提供了显示SVG文件内容的类。可伸缩矢量图形(SVG)是一种描述二维图形和图形应用的语言。
- QtSql:模块提供操作数据库的类。
- QtTest:包含的功能,使pyqt5应用程序的单元测试
主要类
-
QObject类:在类层次结构中是顶部类(Top Class),它是所有PyQt对象的基类。
-
QPaintDevice类:所有可绘制的对象的基类。
-
QApplication类:用于管理图形用户界面应用程序的控制流和主要设置。它包含主事件循环,对来自窗口系统和其他资源的所有事件进行处理和调度;它也对应用程序的初始化和结束进行处理,并且提供对话管理;还对绝大多数系统范围和应用程序范围的设置进行处理。
-
QWidget类:所有用户界面对象的基类。QDialog类和QFrame类继承自QWidget类,这两个类有自己的子类系统(Sub-Class System)。
-
QFrame类:有框架的窗口控件的基类。它也被用来直接创建没有任何内容的简单框架,但是通常要用到QHBox或QVBox,因为它们可以自动布置放到框架中的窗口控件。
-
QMainWindow类:提供一个有菜单栏、锚接窗口(如工具栏)和状态栏的主应用程序窗口。
-
QDialog类:最普通的顶级窗口。如果一个窗口控件没有被嵌入到父窗口控件中,那么该窗口控件就被称为顶级窗口控件。在通常情况下,顶级窗口控件是有框架和标题栏的窗口。在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。
上面的类图是使用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来创建主窗口。