您的“关注”和“点赞”,是信任,是认可,是支持,是动力…
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
1 GUI 概述
图形用户界面,英文 Graphical User Interface,简称 GUI,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。
图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。
与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面很受欢迎,例如Windows 之所以广为人知,其最初的吸引力就是来自它所提供的图形用户界面。
作为一个程序设计者,优先要考虑用户的体验感受,一定要让用户感到满意,使用起来方便,程序才会被需要、被使用,这样的程序才具有价值。
2 GUI 常用库
2.1 GUI 常用库概述
本文简单介绍一下 Python 常用的主要跨平台(Windows,Mac OS X,类 Unix) 的图形用户界面库。
此外还存在许多其他适用于 Python 的 GUI 工具集,既有跨平台的,也有特定平台专属的。 请参见 Python Wiki 中的 GUI 编程页面查看更完整的列表 Python Wiki GuiProgramming。
对于像我一样有“选择困难症”的人来说,选择是很痛苦的一件事儿,有很多的 GUI 库,到底要用哪一种呢?
我个人认为,只要选择一种自己喜欢的,用的顺手的,并深入钻研下去就很好了。萝卜白菜,各有所爱呗。情人眼里出西施,不是情人的都不是西施。
如果你自己不去尝试着都使用一遍,找到自己喜欢的,也可以听取其他人的建议。下面罗列了一些常用的 GUI 库,希望能帮到大家一点点。
2.2 Tkinter
Tkinter 是 Python 自带的 GUI 库,无须进行额外的下载安装,只要导入 tkinter 包即可使用。
Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 。Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh(一般指 MAC) 系统里。Tk 8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
在 Python 3.x 中 Tkinter 已经更改为 tkinter,使用方法是 import tkinter。
tkinter 最大的优点就一个字:快;再一个,是 Python 自带的,无需下载安装。
尽管官方文档不太完整,但有其他资源可以参考,比如 Tk 手册、教程等。
tkinter 也以比较过时的外观为人所知,但在 Tk 8.5 中,这一点得到了极大的改观。
对于 Tkinter ,我们可以做一了解,不建议使用,因为 Tkinter 没有提供一个图形界面设计器,如果你想要构建一个 GUI 界面布局,你就必须自己写代码,这一点就会让我们放弃使用它。
2.3 PyGObject
PyGObject 是一个 Python 软件包,它为基于 GObject 的库(例如 GTK,GStreamer, WebKitGTK,GLib,GIO 等)提供绑定。这些库可以支持 GTK+3 图形界面工具集,GTK+ 3 可视化部件集就是此类函数库中的一个,因此 GObject 提供了丰富的图形界面组件,比 tkinter 提供的更多。
GTK+3 请参见 Python GTK+ 3 教程。
PyGObject 官网请参见 PyGObject 官网。
2.4 PyGTK
PyGTK 提供了对较旧版本的库 GTK+ 2 的绑定,借助于底层 GTK+2 所提供的各种可视化元素和组件,同样可以开发出在 GNOME 桌面系统上运行的软件,因此它主要适用于 Linux/UNIX 系统。PyGTK 对 GTK+2 的 C 语言进行了简单封装,提供了面向对象的编程接口。
比 Tkinter 更现代的外观效果和更多的可视化部件。
2.5 PyQt
PyQt 是 Python 编程语言和 Qt 库的成功融合。作为 Python 的一个模块,不完全统计有 620 多个类和 6000 多个函数和方法。Qt 本身是一个扩展的 C++ GUI 应用开发框架,Qt 可以在 UNIX、Windows 和 Mac OS X 上完美运行,因此 PyQt 是建立在 Qt 基础上的 Python 包装。所以 PyQt 也能跨平台使用。
它比 Tkinter 更现代的外观效果和更多的可视化组件。 它有一个 QT Desiginer,这个设计器可以方便我们进行页面的布局,在 Tkinter 里面需要写代码完成的页面布局,在 QT 里面只要拖一拖控件就搞定了。
PyQt5是双重许可,开发者可以在 GPL(通用公共许可证) 和商业许可证之间进行选择。
PyQt5 参考指南 PyQt 5 参考指南。
如果对 Python GUI 感兴趣,可以研究一下 PyQt 哦。
2.6 PySide2
PySide2 也称为 Qt for Python 项目,是对 Qt 工具包的较新绑定。它由 Qt Company 提供,旨在为 Qt 5 提供完整的 PySide 端口。
与 PyQt 相比,其许可方案比非开源应用程序更友好。
PySide2 官网 PySide2 官网。
2.7 wxPython
wxPython 是一个跨平台的 GUI 工具集,wxPython 以流行的 wxWidgets(原名 wxWindows)为基础,提供了良好的跨平台外观。
wxPython 是免费的,源代码是开放的,允许其应用在商业产品上,你可以免费使用它和共享它。同时,它也提供类似 QT Designer 的设计器 wxFormbuilder。虽然是免费的,但是该有的功能没有缺失,完全够用。
通过尽可能使用每个平台的本机小部件(在类似 Unix 的系统上为 GTK +),它为 Windows,Mac OS X 和 Unix 系统上的应用程序提供了本机外观。除了大量的小部件之外,wxPython 还提供了用于在线文档和上下文相关帮助,打印,HTML查看,低级设备上下文绘制,拖放,系统剪贴板访问,基于 XML 的资源格式等的类,包括不断增长的用户贡献模块库。
简单来说,wxPython 在 Windows 上调用 Windows 的本地组件、在 Mac OS 上调用 Mac OS X 的本地组件、在 Linux 上调用 Linux 的本地组件,这样可以让 GUI 程序在不同的平台上显示平台对应的风格。
2.8 Jython:
Jython 程序可以和 Java 无缝集成。
除了一些标准模块,Jython 使用 Java 的模块。
Jython 几乎拥有标准的 Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT 或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。
Jython 官网 Jython 官网。
【友情链接】
微信公众号:码农阿杰
【参考资料】