PyQt5 概览

PyQt5 简介

PyQt5 是 Digia 的一套 Qt5 应用框架与 python 的结合,同时支持 2.x 和 3.x。Qt库由Riverbank Computing开发,是最强大的GUI库之一 ,官方网站

PyQt5 是由一系列 Python 模块组成。超过 620 个类,6000 函数和方法。能在诸如 Unix、Windows 和 MacOS 等主流操作系统上运行。PyQt5 有两种证书,GPL 和商业证书。

PyQt5 模块

PyQt5 类分为很多模块,主要模块有:

模块 功能
QtCore 包含了核心的非 GUI 的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime 类文件、进程与线程一起使用。
QtGui 包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类。
QtWidgets 包含了一系列创建桌面应用的 UI 元素。
QtMultimedia 包含了处理多媒体的内容和调用摄像头 API 的类。
QtBluetooth 包含了查找和连接蓝牙的类。
QtNetwork 包含了网络编程的类,这些工具能让 TCP/IP 和UDP开发变得更加方便和可靠。
QtPositioning 包含了定位的类,可以使用卫星、WiFi 甚至文本。
Enginio 包含了通过客户端进入和管理Qt Cloud的类。
QtWebSockets 包含了WebSocket协议的类。
QtWebKit 包含了一个基WebKit2的web浏览器。
QtWebKitWidgets 包含了基于QtWidgets的WebKit1的类。
QtXml 包含了处理 xml 的类,提供了 SAX 和 DOM API 的工具。
QtSvg 提供了显示 SVG 内容的类,Scalable Vector Graphics(SVG)是一种是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式(这句话来自于维基百科)。
QtSql 提供了处理数据库的工具。
QtTest 提供了测试 PyQt5 应用的工具。

PyQt4 和 PyQt5 的区别

PyQt5 不兼容 PyQt4。PyQt5 有一些巨大的改进。但是,迁移并不是很难,两者的区别如下:

  • 重新组合模块,一些模块已经被废弃(QtScript),有些被分为两个子模块(QtGui, QtWebKit)。
  • 添加了新的模块,比如 QtBluetooth, QtPositioning,和 Enginio。
  • 废弃了 SINGAL() 和 SLOT() 的调用方式,使用了新的信号和槽处理方式。
  • 不再支持被标记为废弃的或不建议使用的 API。

简单的窗口:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
# 引入PyQt5.QtWidgets模块,这个模块包含了基本的组件。
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
    # 每个 PyQt5 应用都必须创建一个应用对象。sys.argv 是一组命令行参数的列表。Python 可以在 shell 里运行,这个参数提供对脚本控制的功能。
    app = QApplication(sys.argv)
    # QWidge 控件是一个用户界面的基本控件,它提供了基本的应用构造器。默认情况下,构造器是没有父级的,没有父级的构造器被称为窗口(window)。
    w = QWidget()
    # resize()方法设置窗口大小:宽250px,高150px。
    w.resize(250, 150)
    # move() 是修改控件位置的的方法。它把控件放置到屏幕坐标的(300, 300)的位置。
    w.move(300, 300)
    # 我们给这个窗口添加了一个标题,标题在标题栏展示。
    w.setWindowTitle('Simple')
    # show()能让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
    w.show()
    # 进入应用的主循环中,事件处理器这个时候开始工作。主循环从窗口上接收事件,并把事件传入到派发到应用控件里。当调用 exit() 方法或直接销毁主控件时,主循环就会结束。sys.exit() 方法能确保主循环安全退出。外部环境能通知主控件怎么结束。
    sys.exit(app.exec_())

可以在这个小窗口上面做很多事情,改变大小,最大化,最小化等,这需要很多代码才能实现。这在很多应用中很常见,没必要每次都要重写这部分代码,Qt 已经提供了这些功能。PyQt5 是一个高级的工具集合,相比使用低级的工具,能省略上百行代码。

本作品采用《CC 协议》,转载必须注明作者和本文链接
不要试图用百米冲刺的方法完成马拉松比赛。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!