PyQt5简介:
PyQt5是由Digia开发的一套绑定Python语言的QT5应用框架,兼容Python 2.x和Python 3.x。Qt是一套强大的GUI库。PyQt5的官网是www.riverbankcomputing.co.uk/news。PyQt5由Riverbank Computing公司开发和维护。
PyQt5用Python对Qt5的核心模块进行了封装,实现了620个类和6000个函数以及方法。它是一个跨平台的开发包,可以运行在大多数的操作系统上,包括Unix、Windows以及Mac OS。PyQt5支持两种许可协议,GPL和商用许可,开发者可以在其中选择一种。
PyQt5的类可以分成以下几种,包含在不同的模块中:
- QtCore
- QtGui
- QtWidgets
- QtMultimedia
- QtBluetooth
- QtNetwork
- QtPositioning
- Enginio
- QtWebSockets
- QtWebKit
- QtWebKitWidgets
- QtXml
- QtSvg
- QtSql
- QtTest
QtCore库包含了与GUI无关的核心功能,包括时间管理、文件及目录、数据类型、流、URL、mime类型、线程或进程等。
QtGUI库包含了窗口系统集成、事件处理、2D、图像处理、字体、文字处理等功能。
QtWidgets库则提供了一系列的UI模块,这些模块可以创建人机交互界面,比如按钮、拖动条、进度条等。
QtMultimedia库提供了多媒体内容管理接口,用来处理摄像头和麦克风等。
QtBluetooth库可以用来扫描、连接蓝牙设备,并提供了通信的借口。
QtNetwork库提供了网络编程接口类,使用这些类可以创建更易用、移植性更好的网络服务器和客户端。
QtPositioning库提供了获取位置信息的类,包括通过卫星、WIFI甚至文本文件的方式。
Enginio库实现了一个客户端接口,用来访问Qt云服务管理应用。
QtWebSockets库包含了一些实现WebSocket协议的类。
QtWebKit库提供了基于WebKit2库实现一个web浏览器的类。
QtWebKitWidgets库提供了一些基于WebKit1库实现一个web浏览器的类,这些类可以运用到使用QtWidgets的应用程序中。
QtXml库提供了处理XML文件的类,包含SAX和DOM两种API接口。
QtSvg库提供了用于显示SVG文件的类。SVG是一种用来描述二维图形和图像应用程序的XML标记语言。
QtSql库提供了数据库接口类。
QtTest库提供了运用于PyQt5应用程序的单元测试库。
PyQt4 和 PyQt5 的区别
PyQt5不向后兼容PyQt4;PyQt5包含很多重大的更改。但从PyQt4移植到PyQt5上并不是很困难。两者最主要的差别有:
Python模块被重新组织;删除了一些模块(比如QtScript),另外一些模块被拆分成多个(比如QtGui和QtWebKit);
引入了一些新的模块,包括QtBluetooth、QtPositioningy以及Enginio;
PyQt5只支持新的信号-插槽机制,不再支持旧的SIGNAL()或SLOT()接口;
PyQt5不支持任何在Qt 5.0中被标记为deprecated或obsolete的接口;
反正就是PyQt5.Qtwidgets里面的QApplication和QWidget是必要的,其中QApplication接受一个参数一般用sys.args,这样从命令行也可以运行程序。
QWidget则创造一个主窗体(如果构造函数没有给任何参数的话,否则是子窗体),然后这个窗体有各种函数去操作它。
然后QApplication的对象有一个方法是exec_可以创建一个永真循环,从这里开始监听事件,然后反馈给各个组件。
代码:
# coding='utf-8'
import sys
from PyQt5.QtWidgets import QApplication, QWidget
gui = QApplication(sys.argv)
win = QWidget()
win.setWindowTitle('第一个PyQt5')
win.resize(250, 250)
win.move(300, 300)
win.show()
sys.exit(gui.exec_())
运行结果: