有哪些Python GUI API?
简单的问题:
- 有哪些Python GUI API,任何给定API的优点是什么?
我不是要在这里发动一场宗教战争,我只是想就Python GUI API方面的所有问题取得良好的解决。
解决方案
这是一个很好的清单。
如果我们对Qt有经验或者感兴趣,PyQt就是很好的选择。
http://www.riverbankcomputing.co.uk/software/pyqt/intro
大多数python GUI API都是最常见的c / c ++ GUI API的包装。我们有一个用于gtk的python包装器,一个用于qt的python包装器,一个用于.NET的python包装器等。
因此,这实际上取决于需求。如果我们正在寻找最简单的方法来在Linux,Mac和Windows上绘制具有本机外观的小部件,请使用wxPython(WX小部件的Python包装器)。如果跨平台不是需求之一,那么其他库可能会更有用。
我喜欢wxPython或者Tk。
Tk带有标准的Python发行版,因此我们不需要安装其他任何东西。
wxPython(wxWigets)似乎更强大,并且看起来更好。它在跨平台上也能很好地工作(尽管不是很完美,因为它在diff系统类型上使用了不同的底层图形API)
我将不发表选择清单,而是发表我的拙见:
我爱上了wxPython。
早在Tcl时代,我就在C ++和Tk中使用Qt,但真正使我像wxPython的是我们所获得的演示。在演示中,我们可以浏览框架中所有不同的小部件框架等,以查看源代码并实际查看其运行时的外观。
我在构建和安装Linux版本时遇到了一些问题,但是现在我可以使用它了,我一直在使用它。我已经将wxPython用于小型数据分析应用程序,并且编写了一些内部工具,这些工具与比较测试结果,合并源代码等有关。
我发现此链接已经很长时间了:http://www.awaretek.com/toolkits.html。它会根据标准建议一名接受者。对我而言,它始终建议使用wxPython。无论如何,它会在各种工具包上给我们很多分数。对我来说合适的东西可能对我们不合适。但是,它可以根据条件为我们提供所有被测者的评分方式,因此,如果由于某种原因而我们不喜欢顶级工具包,则可以查看哪些工具最接近条件。
QT / GTK / WxWidgets(以前称为wxWindows)似乎是最成熟的跨平台GUI工具包之一。唯一的问题是默认安装的Python没有安装任何库,因此我们可能必须编译这些库。如果我们不需要安装就可以运行,那么请使用TKInter,因为如上所述,默认情况下它是使用Python安装的。
无论如何,我的标准是:易用性为9,文档/小工具的成熟度为10,已安装基础为10,GUI代码生成器为5,windows / linux的本机外观为10,后两个为1和5,对于Mac OSX而言,它并不大(即使此处为10,也表示wxpython)。
PythonCard非常易于使用。那就是我的建议。
这是他们的文章:
PythonCard is a GUI construction kit for building cross-platform desktop applications on Windows, Mac OS X, and Linux, using the Python language. The PythonCard motto is "Simple things should be simple and complex things should be possible." PythonCard is for you if you want to develop graphical applications quickly and easily with a minimum of effort and coding. Apple's HyperCard is one of our inspirations; simple, yet powerful. PythonCard uses wxPython. If you are already familiar with wxPython, just think of PythonCard as a simpler way of doing wxPython programs with a whole lot of samples and tools already in place for you to copy and subclass and tools to help you build cross-platform applications.
我已经使用wxPython几年了,我非常喜欢它。关于wxPython的最好的事情是UI在其运行的不同平台上感觉很原生(在Windows和Linux上非常出色,尽管在OS / X上不那么出色)。
该API缺乏一致性,但是我们很快就会习惯它。
我们可以查看Testuff(无耻的插件,因为它是我自己的产品),以了解使用wxPython可以完成的工作(尽管我必须说,要付出很多努力)。
我用过Tkinter和wxPython。 Tkinter非常基础,并且不使用本机窗口小部件。这意味着Tkinter应用程序在听起来很有吸引力的任何平台上看起来都是一样的,但是在实践中,这意味着它们在任何平台上看起来都很难看:-/然而,它非常易于使用。当我学习时,我发现使用Tkinter进行思考非常有帮助,因为我以前从未做过任何GUI编程。但是,如果我们熟悉框架和布局算法以及按钮和绑定之类的内容,则可以跳过该步骤。
我们可以使用Tix增强Tkinter(但要注意,Tix在py2exe中不能很好地发挥作用)。还可以查看Python Megawidgets,它使用Tkinter基础知识构建了一些更高级的控件。
最后,Tkinter在外壳程序中发挥了很好的作用:我们可以启动解释器,执行诸如" import tkinter"," tk = tkinter.Tk()"之类的操作,并以交互方式构建GUI(它将响应)。 (不过,我认为如果我们使用IDLE,这是行不通的)
wxPython的外观更好看,并且附带了更多的控件。它是跨平台的(尽管在我的Mac上似乎有点挑剔),并且在每个平台上都使用本机控件。但是,这有点令人困惑。它还附带了一个演示应用程序,可以演示其大多数功能,并为我们提供实验平台。关于wxPython的一些具体想法:
- 有三种(?)不同的布局小部件的方式。忽略其中的两个;只需使用Sizers。即使这样,我们也可以仅使用BoxSizer和GridBagSizer进行几乎任何布局。
- 所有wx小部件都有ID。我们不需要关心ID是什么,但是在过去(我认为)我们确实需要知道,因此一些旧代码会被明确的ID分配所困扰。而且大多数演示代码的ID参数到处都是-1(尽管方法都将ID作为关键字参数,但无论如何默认为-1)。
- 确保获得标准的wxWidgets文档以及同时需要它们的wxPython演示。
- 如果要将wxPython与py2exe一起使用,并且希望它在Windows XP上看起来不错,则setup.py中需要一些技巧。看这里
EasyGUI is different from other GUIs in that EasyGUI is NOT event-driven. It allows you to program in a traditional linear fashion, and to put up dialogs for simple input and output when you need to. If you have not yet learned the event-driven paradigm for GUI programming, EasyGUI will allow you to be productive with very basic tasks immediately. Later, if you wish to make the transition to an event-driven GUI paradigm, you can do so with a more powerful GUI package such as anygui, PythonCard, Tkinter, wxPython, etc.
EasyGui网站
我更喜欢PyGTK,因为我是GNOME家伙。对我来说,使用PyGTK非常好用。代码组织感觉一致,文档干净,透彻,并且它是一个非常容易习惯的工具箱(也许Treeviews除外)。
wxPython和PyGTK也可以使用wxGlade来设计将要创建的大多数UI。这是一大优势。在我们准备好之前,我们不必学习如何手工编写GUI。在我对wxPython如何工作以进行手工编码足够熟悉之前,我直接从wxGlade开发了多个GUI程序。
PyQt具有类似的图形布局设备,但是我从来没有碰到过要PyQt正确编译的好运。也缺少教程和文档来说明如何创建最终的Python代码。我发现的许多文档都涉及Qt的C ++版本。
Tkinter适用于快速而肮脏的程序,但实际上,如果使用wxGlade,则使用wxPython编写程序可能会更快。至少,我们可以使用wxGlade向客户端显示该程序的可视化表示,而不是花时间手工编写"虚拟"程序。
不存在用于Python的易于使用的GUI创建器。考虑到像AutoIt和AutoHotkey这样的小型脚本语言具有出色且非常易于使用的GUI制造商,真是太了不起了。来吧,Python追随者,你能做得更好吗?