今天,大多数程序员都准备脱离固有的传统,尝试在自己的程序中构建图形界面。在Python阵营中,GUI编程并不是特别难,但在起步阶段给了我们多种选择。Python作为一种通用语言,天生就是面向多种操作系统的,这无疑给图形界面的发展带来了障碍。幸运的是,市场上有几种解决方案可以真正解决这个问题。Windows、Mac和Linux都有一系列原生的UI框架,其中相当一部分甚至可以轻松跨越不同的操作系统。但在进行设计之前,我们需要先考虑这样一个问题:是否有必要为应用程序配备图形用户界面?如果您的应用程序本身包含图形元素,并且专门针对单机运行环境进行了优化甚至设计,那么答案显然是肯定的。但对于那些通用的程序,命令行或网络界面仍然是最好的解决方案。命令行在速度、远程访问、可重用性、脚本支持和可控性等方面更具优势,Click、Cement、Cliff等库的存在也使得程序中的命令行设计变得非常容易。同样,我们可以使用Django、Flask或Pyramid轻松地为程序构建Web界面。您甚至可以使用像pywebview这样的库将Web应用程序打包到一组原生风格的GUI窗口中。但如果您仍然想设计GUI,那么让我们来看看三个优秀的开源框架选项。PyQtPyQt可以实现非常流行的Qt库,所以如果你熟悉如何使用其他语言进行Qt开发,那么上手PyQt就不会有任何障碍。它使Python应用程序具有跨平台的外观和感觉,同时继承了Qt社区带来的巨大知识支持和工具选项。PyQt同时提供商业和GPL许可(这与Qt项目本身不同),感兴趣的朋友也可以点击此处了解PyQt许可相关的常见问题解答(英文版)。Tkinter如果你想为Python选择一个可以称为“标准”的GUI工具包,那么答案应该是Tkinter。Tkinter是一个基于Tcl/Tk的打包工具,后者是1990年代初诞生的高度流行的图形界面和语言组合。Tkinter的最大优势在于其丰富的资源,包括文本和代码示例,以及庞大的用户社区。通过实例,我们可以很容易的上手这套图形化界面的实现。Tkinter遵循Python许可,而Tcl/Tk基于BSD许可。WxPythonWxPython将用于C++的wxWidgets跨平台GUI库带到Python。WxPython是一个相对现代的解决方案,它的原生外观比Tkinter更高,这主要是由于它偏向于为不同的系统平台创建控制结果。它很容易上手,并且拥有一个快速发展的开发者社区。但是,您需要自己将wxPython绑定到应用程序,因为它不能通过Python自动安装。WxPython采用其父项目wxWindows的库许可证,该许可证是OSI批准的。当然,这里介绍的并不是您唯一的选择。感兴趣的朋友可以点此从Python软件基金会的官方wiki页面了解更多关于PythonGUI编程的知识。除了更传统的窗口设计理念之外,您有时可能还想创建与众不同的界面效果,尤其是在视频游戏中。对于这样的需求,推荐大家试试pygame和pyglet。你最喜欢的图形框架是什么?你为什么做出这个选择?请在评论中分享您的经验!原文链接:三个优秀的开源PythonGUI框架概述
