5个开源Python GUI框架

您的Python程序需要图形用户界面吗?这里有五个工具可以帮助您构建一个。

在Python中,开始GUI编程的步骤并不十分复杂,但是它们确实需要用户开始做出一些选择。由于Python是一种通用编程语言,在每个通用操作系统中都有解释器可用,因此它对于创建图形用户界面的选择是相当不可知的。

幸运的是,有许多可供程序员使用的选项,它们希望为用户提供一种与用户的程序进行交互的简便方法。在各种平台上都存在针对多个UI框架的绑定,包括Linux,Windows和Mac原生的绑定,并且许多跨这三个平台均可使用。

对于您的应用程序而言,拥有传统的图形用户界面真的有意义吗?对于某些程序,答案是显而易见的。如果您的应用程序本质上是图形的,并且为在单个本地计算机上本地运行而进行了优化或使其有意义,那么可以,您可能应该考虑构建桌面GUI。

但是对于通用程序,请不要忽略命令行或Web界面。命令行具有许多优点 – 速度、远程访问、可重用性、可编写脚本和控制。与图形界面相比,这对于您的应用程序用户而言可能更为重要,还有许多库(如Click、Cement和Cliff)使设计优秀的命令行程序变得更容易。

类似地,web界面(即使是要在本地运行的程序)可能也是一个值得考虑的选项,特别是如果您认为您的用户可能希望远程托管您的应用程序,而Django、Flask或Pyramid之类的项目都使这一点非常简单。您甚至可以使用像pywebview这样的库在本地GUI窗口中对web应用程序进行包装。

或者,您可以使用Pyforms之类的框架在Web、命令行和桌面上构建一致的体验,而所有这些都只需一个代码库。

仍然确定要构建GUI吗? 很好,这里有一些很棒的开源库,可以帮助您入门。

PyQt、PySide和适用于Python的Qt

PyQt(链接:https://riverbankcomputing.com/software/pyqt/intro)实现了流行的Qt(链接:http://www.qt.io/)库,因此,如果您熟悉另一种语言的Qt开发,例如从为KDE或其他基于Qt的桌面环境开发本机应用程序,您可能已经熟悉Qt。这就开辟了使用Python开发应用程序的可能性,这些应用程序在许多平台上都具有熟悉的外观和感觉,同时利用了大型Qt社区的工具和知识。

Qt已经在开发人员社区中建立了良好的基础,并且有相应的工具来反映这一点。围绕Qt编写Python应用程序意味着您可以访问QtCreator(链接:https://www.qt.io/development-tools),它的特性是使用设计器模式为应用程序的布局生成代码。

PyQt是在商业和GPL许可下双重授权的,与Qt项目本身并无不同。并且支持PyQt的主要公司提供了许可证常见问题解答(链接:https://www.riverbankcomputing.com/commercial/license-faq),以帮助理解这对您的应用程序意味着什么。

对于将Qt库与Python一起使用的另一种选择,请考虑LPGL下提供的Qt for Python(通常称为PySide2,链接:https://wiki.qt.io/Qt_for_Python)。

Tkinter

如果有一个单独的软件包可以被称为Python的“标准” GUI工具包,那就是Tkinter(链接:http://tkinter.unpythonic.net/wiki/)。Tkinter是Tcl/Tk(链接:http://www.tcl.tk/)的包装,Tcl/Tk是90年代初期首次流行的一种流行的图形界面和语言配对。选择Tkinter的优点是拥有大量资源,包括书籍和代码示例,以及庞大的用户社区,如果您有疑问,他们可以为您提供帮助。简单的示例很容易上手,相当容易理解。

除了Tcl / Tk的BSD许可之外,Tkinter还可以通过Python许可(链接:http://tkinter.unpythonic.net/wiki/Tkinter)获得。

WxPython

WxPython(链接:http://www.wxpython.org/)将wxWidgets跨平台的GUI库从它的本机C++带到Python中。在不同的操作系统中,WxPython看起来比Tkinter更本机化一些,因为它使用主机系统的小部件来构造GUI。它也很容易上手,并且有一个不断增长的开发人员社区。您可能需要将wxPython与您的应用程序捆绑在一起,或者要求用户自己安装wxPython,因为它不是与Python一起自动安装的。

WxPython使用其上级项目的wxWindows库许可(链接:http://www.wxwidgets.org/about/licence/),该许可是OSI批准(链接:https://opensource.org/licenses/wxwindows.php)的。

Python GTK+ 3

Python GTK + 3(链接:https://python-gtk-3-tutorial.readthedocs.io/)项目以前称为PyGTK,它提供了与GTK对象(窗口,窗口小部件等)的Python绑定。 GTK +最著名的是用作GNOME桌面的基础,但它也可用于Linux,Windows和Mac上的独立应用程序。使用Python GTK+ 3,同样的框架也可用于您的Python项目。

使用Python GTK + 3时,可以使用许多为GTK +本身创建的相同开发工具。最值得注意的是,其中包括GTK +应用程序的界面设计器Glade。用Glade设计的界面被保存为XML,并由应用程序代码中的GtkBuilder对象使用,但是您使用的界面是拖放式的,因此可以轻松创建动态且响应迅速的UI,而无需将您在自己的视图中看到的内容转换为布局代码。

Kivy

Kivy(链接:https://kivy.org/#home)是在考虑到快速发展和现代化设备的基础上构建的,是用于Linux(包括Raspberry Pi),Windows,Mac和Android的工具包。该项目专注于“创新的用户界面”,并且已用于多媒体应用程序,例如用于手机的音乐控制器应用程序以及占据整个会议室墙壁的白板应用程序。

Kivy没有像QtCreator和Glade这样的视觉布局程序,但是它使用自己的设计语言来帮助您将UI布局与代码对象相关联。这使您可以轻松地(在精神上和在布局代码中)分隔应用程序中的类和函数。Kivy还托管Kivy Garden,Kivy Garden是用户创建的小部件和附加组件的存储库,因此,如果您想创建Kivy本身不提供的某些内容,则它可能已存在于Garden中。

有关更多选项,请查看官方Python软件基金会wiki上的“Python中的GUI编程(链接:https://wiki.python.org/moin/GuiProgramming)”页面,其中列出了许多其他工具。可以使用解决方案将Python绑定到许多不同的小部件库和GUI工具,如FLTK(链接:http://www.fltk.org/index.php)、FOX(链接:http://fxpy.sourceforge.net/)和许多其他工具。虽然初学者可能应该避免只提供部分实现的项目,或者那些不再积极维护的项目,但是有很多适合各种情况的好工具。

对于传统应用程序而言,有许多选项可以采用其父桌面环境的窗口外观,但是有时您可能希望做一些完全不同的事情,例如在视频游戏中。也有很多适合这些情况的库,例如pygame(链接:http://www.pygame.org/wiki/gui),pyglet(链接:https://bitbucket.org/pyglet/pyglet/wiki/Home)和Panda3d(链接:https://panda3d.org/)。

六一编程网

发表评论

Next Post

少儿编程:5个比你想像中更重要的原因

周日 6月 21 , 2020
儿童编码一直是教育界的热门话题。大多数父母和教育者都认识到计算机编程(也称为编码)的重要性,但仍有许 […]