欢迎光临散文网 会员登陆 & 注册

PyQt初识

2021-12-01 08:59 作者:海鸥之道  | 我要投稿

    在目前的软件设计过程中,图形用户界面(GUI)的设计相当重要,美观、易用的用户界面能够在很大程度上提高软件的使用量,因此许多软件都在用户界面上倾注了大量的精力。

在介绍PyQt框架之前,我们先来了解什么是图形用户界面(GUI)。

以下来自百度百科:

    GUI是 Graphical User Interface的英文简称,即图形用户界面,准确地说,GUI就是屏幕产品的视觉体验和互动操作部分。GUI是一种结合计算机科学、美学、心理学、行为学及各商业领域需求分析的人机系统工程,强调人—机-环境三者作为一个系统进行总体设计。

Python最初是作为一门脚本语言开发的,并不具备GUI功能,但由于其本身具有良好的可扩展性,能够不断地通过C/C++模块进行功能性扩展,因此目前已经有相当多的GUI控件集(Toolkit)可以在Python中使用了。

在Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和 Libavg,其中PyQt是 Qt为 Python专门提供的 GUI扩展。

百科词条:

PyQt是一个用于创建GUI应用程序的跨平台的工具包,它将Python 编程语言和Qt库成功融合在一起。Qt库是目前最强大的GUI库之一。PyQt是由Phil Thompson开发的,实现了一个Python模块集。PyQt拥有620多个类、将近6000个函数。PyQt可以运行在所有主流的操作系统上,包括UNIX、Windows和 Mac OS.PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL版本只能用在UNIX上;从PyQt4开始,GPL版本可用于所有支持的平台上

访问PyQt 5的官方网站: https://www.riverbankcomputing.com/。PyQt 是Python下的一套图形用户界面库,可以在 Python中调用Qt的图形库和控件。

pyqt官网

1、PyQt特色

让我们来看看pyqt的中文官网,https://www.qt.io/zh-cn/product,答案就在其中:

pyqt中文官网

《财富》全球500强企业中的前10家企业,有8家在使用Qt开发软件,pyqt越来越受到喜爱,就是因为它由如下特性:

  • 能够跨平台运行在Windows、Linux和 Mac OS等系统上。

  • 使用信号/槽(signal/slot)机制进行通信。 

  • 对Qt库完全封装

  • 可以使用Qt成熟的IDE(如QtDesigner)进行图形界面设计,并自动生成可执行的python代码 

  • 提供了一整套种类繁多的窗口控件。

2、Qt和PyQt的关系

首先,PyQt是Qt框架的Python语言实现。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都有其对应的Qt控件。所以PyQt与 Qt的类库和API非常详细,而且PyQt不再使用qmake系统和Q_OBJECT宏,使得PyQt再也没有编译链接错误,PyQt的代码也更加友好。

其次,在开发速度上,由于PyQt的核心就是Qt库,也是用C++编写的,所以即使逻辑代码运行速度慢一点,也不会成为性能瓶颈。在使用方式上,PyQt也没有失去Python的优雅语法、快速开发的能力。Python相对于C++的优点是在编程效率上,可以看到标准的Qt例子移植到PyQt后的代码具有相同的功能,使用相同的应用程序接口,Python版本的代码只有原来的50%~60%,而且更容易阅读。在开发效率上,由于Python是一种面向对象的语言,语法简单、高效,相对于C++而言,使用Python编写程序可以提高开发效率,减少开发成本。

最后,PyQt向 Python程序员提供了使用完整的Qt应用程序接口的函数,几乎可以用Python做任何Qt能做的事。Qt和PyQt的设计都是完全面向对象的。Qt使用一种称为信号/槽的机制在窗口控件之间传递事件和消息。这种机制完全不同于其他图形界面开发库所采用的回调( callback)机制,使用信号/槽可以使程序更加安全和简洁。所开发的应用程序越大,Qt/PyQt的这个优势就越明显。

3、其他GUI图形界面库简介

从 Python语言的诞生之日起,就有许多优秀的GUI工具集被整合到Python当中,使得Python也可以在图形界面编程领域大展身手。由于 Python的流行,许多应用程序都是用Python结合这些优秀的GUI 工具集编写的。下面分别介绍PythonGUI 编程的各种实现(内容来自维基百科)。

1) Tkinter

Tkinter 是绑定了Python 的 Tk GUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl解释器实现。将Tkinter的调用转换成Tcl命令,然后交给Tcl解释器进行解释,实现Python的GUI。Tk和其他语言的绑定,比如PerITk,是直接由Tk中的C库实现的。

Tkinter 是 Python事实上的标准GUI,在 Python中使用Tk GUI工具集的标准接口,已经包含在 Python Windows安装程序中,著名的IDLE 就是使用Tkinter实现GUI的。

Tkinter 是 Python事实上的标准GUI,在 Python中使用Tk GUI工具集的标准接口,已经包含在 Python Windows安装程序中,著名的IDLE 就是使用Tkinter实现GUI的。

2)wxPython

wxPython是 Python对跨平台的GUI工具集wxWidgets(用C+编写)的包装,作为Python的一个扩展模块来实现。

wxPython是比较流行的Tkinter 的一个替代品,在各种平台上都表现良好。

3)PyGTK

PyGTK是Python对GTK+GUI库的一系列包装。

PyGTK是比较流行的Tkinter的一个替代品,Gnome下许多著名应用程序的GUI都是使用PyGTK 实现的,比如 BitTorrent、GIMP等。PyGTK和 Gedit都有可选的实现,在 Windows平台上似乎表现不太好,这一点也无可厚非,毕竟使用的是 GTK的GUI库。

4)PySide

PySide由 Qt官方维护,是 Python对跨平台的GUI工具集Qt的另一个包装,捆绑在Python当中。PySide是比较流行的Tkinter的一个替代品,拥有LGPL 2.1授权许可,允许进行免费的开源软件和私有的商业软件的开发。

在上面的图形界面开发库中,由于前三个没有类似于Qt Designer(UI制作工具,它可以通过可视化操作创建UI文件,然后通过工具快速编译成Python 文件,因此也可以把它视为一个代码生成器)的工具,所有的代码都需要手动输入,学习曲线非常陡峭;而第四个PySide本质上也是Qt的 Python封装,只是支持Qt的版本比较老,最新版本才支持到Qt 4.8,而且官方已经停止维护这个库,最近一次更新是在2015年10月14日。所以,对于 Python使用者来说,使用PyQt进行GUI 开发是最好的选择。


PyQt初识的评论 (共 条)

分享到微博请遵守国家法律