时至今日,大多数程序员已经准备好摆脱固有传统,尝试在自己的程序中构建图形界面。
在Python阵营中,进行GUI编程并不算特别困难,但却在起步阶段就给我们提供了多种选项。作为通用型语言,Python天然面向多种操作系统,这无疑给图形界面的开发带来了障碍。
幸运的是,市面上存在多种方案能够切实解决此类难题。Windows、Mac与Linux各自拥有一系列原生UI框架,其中相当一部分甚至能够轻松跨越不同操作系统。
不过在着手设计之前,我们需要首先考虑这样一个问题:为应用配备图形用户界面是否必要?如果大家的应用本身就包含图形元素,而且针对单机运行环境进行了优化甚至是针对性设计,那么答案显然是肯定的。
但对于那些通用型程序,命令行或者Web界面则仍是***方案。命令行在速度、远程访问、复用性、脚本支持能力及控制性方面更具优势,而Click、Cement以及Cliff等库的存在也让程序中的命令行设计变得非常轻松。
同样的,我们可以利用Django、Flask或者Pyramid轻松为程序构建Web界面。大家甚至可以使用pywebview这样的库将Web应用打包成一套***原生风格的GUI窗口。
但是如果大家仍然希望设计一套GUI,那么下面就来一起了解三款卓越的开源框架选项。
PyQt
PyQt能够实现高人气Qt库,因此如果大家熟知如何利用其它语言进行Qt开发,那么上手PyQt也不会出现什么障碍。其能够让Python应用具备跨平台外观风格与使用感受,同时继承Qt社区所带来的庞大知识支持与工具选项。
PyQt同时提供商用与GPL许可(这一点与Qt项目本身有所不同),感兴趣的朋友也可点击此处了解与PyQt许可相关的常见问题(英文原文)。
Tkinter
如果要为Python选出一款能够称得上“标准”的GUI工具包,那么答案应该是Tkinter。Tkinter是一款以Tcl/Tk为基础的打包工具,而后者则属于诞生自上世纪九十年代初的高人气图形界面与语言组合。Tkinter的***优势在于拥有丰富的资源,其中包括文本与代码示例以及庞大的用户社区。通过示例,我们能够轻松上手这套图形界面实现方案。
Tkinter遵循Python许可,同时基于Tcl/Tk的BSD许可。
WxPython
WxPython 将针对C++的wxWidgets跨平台GUI库带给了Python。WxPython是一套较为现代的方案,其外观的原生程度高于Tkinter,这主要归功于其更倾向于针对不同系统平台建立控件成果。其易于上手,同时拥有快速发展的开发者社区。不过大家需要自行将wxPython与应用相绑定,因为其无法通过Python自动进行安装。
WxPython采用其父项目wxWindows的库许可,这一许可获得了OSI批准。
当然,这里介绍的并非大家的惟一选项。感兴趣的朋友可以点击此处从Python软件基金会的官方维基页面中深入了解Python中的GUI编程。
而且除了较为传统的窗口设计思路外,大家有时候也可能希望建立起特色鲜明的界面成果,特别是在视频游戏当中。对于此类需求,推荐大家尝试pygame与pyglet。
大家喜爱的图形框架有哪些?您又为何做出这样的选择?请在评论中分享您的体会!