python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9341|回复: 0

PyQt ── 使用 GPL 许可协议的 Qt GUI 开源 Python 绑定

[复制链接]

172

主题

258

帖子

1114

积分

版主

Rank: 7Rank: 7Rank: 7

金钱
663
金币
7
威望
0
贡献
0
发表于 2015-2-8 23:12:10 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
PyQt ── 使用 GPL 许可协议的 Qt GUI 开源 Python 绑定

PyQt 是一个创建 GUI 应用程序的工具包。它是 Python 编程语言和 Qt 库的成功融合。Qt 库是目前最强大的 C++ 库之一。PyQt 是 Python 编程语言的 GUI 编程解决方案之一。可代替 Python 的内置 Tkinter。Python GUI 编程的其它替代者,还有 PyGTK、wxPython 等。与 Qt 一样,PyQt 也是自由软件。PyQt 是 PyKDE 的基础。


PyQt 的开发者是英国的 “Riverbank Computing” 公司。与 4.5 版本之前的 Qt 一样,PyQt 提供了 GPL 与商业协议 2 种授权方式;在此之前,GPL 版本只能用于 Unix 上,从 PyQt 版本 4 开始,GPL 许可可用于所有支持平台。因此,PyQt 可免费用于自由软件的开发。不过,目前尚不提供 LGPL 授权方式。PyQt 可运行于 Microsoft Windows、Mac OS X、Linux 及 Unix 操作系统平台。


2009 年 8 月,Qt 开发公司诺基亚发布 PySide,提供与 PyQt 类似的功能,但提供了 LGPL 授权。主要因为 “Riverbank Computing” 不愿以 LGPL 授权发布 PyQt。


自 PyQt 4.5 版后,PyQt 同时支持 Python 2.x 与 Python 3.x。但在 API 方面有区别,最主要的是运行在 Python 3.x 下的 PyQt 不使用 QString,而是 str。另外,之前为避开 Python 2.x 关键词限制的 exec_()、print_() 二函数,现在被重命名为 exec(),print()。


注意:不可同时使用 PyQt4 和 PyQt5 安装程序。 若希望同时安装 PyQt4 和 PyQt5,需从源代码包亲自构建,再安装。


002.jpg

优势

01、PyQt 的 API 与 Qt 类似,Qt 的文档通常仍可用于 PyQt

因此,PyQt 的文档比 PyGTK、wxPython、Tkinter 等 GUI 编程库的文档要丰富得多。


02、若程序员有 Qt 经验,一般很快就可过渡到 PyQt

而使用 PyQt 的程序员,如同时精通 C++ 的话,也可以很快过渡到 Qt 平台。


03、利用 SIP,大多数为 Qt 开发的控件还可方便 port 到 PyQt

然而,SIP 是需要一些学习成本的。


04、有方便的周边工具支持 PyQt

譬如:QtDesigner,可用拖拉方式设计界面,简单易用;


Eric4:一个使用 PyQt 设计的 Python IDE,对 PyQt 有特殊支持。


劣势

01、内存泄露 悬挂指针

由于 PyQt 同时使用了 Qt 及 Python 的两种内存管理方式;所以,在使用 PyQt 的过程中,要注意避免内存泄露以及悬挂指针。


02、运行时庞大

在 Windows 平台,只使用 PyQt.QtCore 与 PyQt.QtGui 两模块时,压缩后至少需要 4.09M。


03、需要学习一些 C++ 知识

主要是 C++ 类型、内存管理两方面,以便阅读 Qt 文档和理解 PyQt 行为。


SIP

SIP 是一个为 C 和 C++ 库生成 Python 扩展模块的自动工具。


为方便开发 PyQt,SIP 于 1998 被 “Riverbank Computing” 公司创造出来。不过,SIP 不专用于 PyQt,而是适用于所有的 C 和 C++ 库。


使用 SIP 时,程序员先要编写一特殊 ".sip" 文件,使用类似 C++ 的语法在其中描述扩展模块所提供的类型与函数。然后用 SIP 将这个文件转化为 C++ 代码。最终编译后,与 C、C++ 库链接后就成为了 Python 扩展模块。


".sip" 文件类似于 C、C++ 头文件。根据需要,程序员需用 SIP 定义的语法添加一些 C++ 代码中没有的信息。因为 SIP 不支持完整 C++ 语法,所以不能直接使用 C++ 头文件作为 ".sip" 文件。


001.jpg

模块简介

PyQt 实现了一个 Python 模块集。


PyQt 有超过 300 个类,将近 6000 个函数和方法。PyQt 可用类很多,譬如:


01、QtCore 模块主要包含了一些非 GUI 基础功能,包含事件循环与 Qt 信号机制

该模块用于时间、文件、目录、各种数据类型、流、网址、MIME 类型、线程或进程。此外,还提供跨平台 Unicode、内存映射文件、共享内存、正则表达式和用户设置。


02、QtGui 模块包含了大多数 GUI 类型

譬如:按钮、文本框、列表、窗体、状态栏、工具栏、滚动条、位图、颜色、字体、等控件。还包含基于 MVC 设计模式的列表、表格、树型控件。同时还提供了一个能够容纳成千上万元素的画布控件,其中可放置各种控件和图形。此外,QtGui 还支持界面动画与界面状态编程。


03、QtNetwork 模块包含网络编程类

这些类允许编写非阻塞式 TCP/IP 和 UDP 客户端和服务器,DNS、HTTP 与 FTP 客户端,使网络编程更简单,更轻便。


04、QtOpenGL 模块使用 OpenGL 库渲染 3D 和 2D 图形

该模块能无缝集成 Qt GUI 库和 OpenGL 库,不必大量更改代码。


05、QtSql 模块提供了用于数据库的类

QtSql 模块支持多种 SQL 数据库,包括 sqlite、ODBC、MySQL、PostgreSQL、Oracle。还提供了一个基于 MVC 模式的数据模型,与 QtGui 的表格控件配合使用。


06、QtXml 包含一个 XML 文件解释器类

可同时支持 SAX 和 DOM 两种编程方式。


07、QtWebkit 支持 WebKit 框架


08、QtScript 支持 EMCAScript 脚本语言


09、Phonon 支持高级多媒体编程

包含音频播放器、视频播放器与声效处理。


10、uic 可将 Qt 窗体文件转换为 Python 代码

能即时读入窗体文件并显示出来。但要依赖 QtXml 模块。


11、QScintilla 包含一个基于 Scintilla 的文本编辑器控件

Eric IDE 使用它作为代码编辑器。


12、QtMultimedia 提供底层多媒体支持

现多数开发者已改用 Phonon 模块。


13、QtSvg 模块支持 SVG 1.2 Tiny 静态标准,提供 SVG 文件显示、保存支持类

可缩放矢量图形(SVG)是一种用于描述二维图形和图形应用程序的 XML 语言。


版本历史
时间
版本
说明
备注
2009.08
1.0
首次发布
2011.07.22
1.0.5


长按二维码关注 "德云社区" ,点击最下方 "阅读原文" 了解更多资讯


版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-11-26 21:20 , Processed in 0.037161 second(s), 31 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表