简单的问题:
- 有哪些 Python GUI API 以及任何给定 API 的优势是什么?
我不是在这里寻找一场宗教战争,我只是想很好地处理 Python GUI API 方面的所有内容。
简单的问题:
我不是在这里寻找一场宗教战争,我只是想很好地处理 Python GUI API 方面的所有内容。
我用过 Tkinter 和 wxPython。Tkinter 非常基础,不使用本机小部件。这意味着 Tkinter 应用程序在任何平台上看起来都一样——这听起来很吸引人,但实际上,这意味着它们在任何平台上看起来都很丑:-/ 不过,它很容易使用。我在学习时发现Thinking in Tkinter非常有用,因为我以前从未做过任何 GUI 编程。但是,如果您熟悉框架和布局算法以及按钮和绑定等内容,则可以跳过该步骤。
您可以使用 Tix 增强 Tkinter(但请注意,Tix 不能与 py2exe 配合使用)。还可以查看 Python Megawidgets,它使用 Tkinter 基础构建了一些更高级的控件。
最后,Tkinter 与 shell 配合得很好:您可以启动解释器,执行诸如 'import tkinter' 'tk = tkinter.Tk()' 之类的操作,并以交互方式构建您的 GUI(它会响应)。(不过,我认为如果您使用 IDLE,这将不起作用)
wxPython 的外观要好得多,并且附带了更多的控件。它是跨平台的(虽然在我的 Mac 上看起来有点挑剔)并且在每个平台上都使用本机控件。不过,这有点令人困惑。它还附带一个演示应用程序,展示了它的大部分功能,并提供了一个测试平台供您进行试验。关于 wxPython 的一些具体想法:
如果您对 Qt 有经验或兴趣,那么 PyQt 非常好。
大多数 python GUI API 将封装最常见的 c/c++ GUI API。你有一个用于 gtk 的 python 包装器、一个用于 qt 的 python 包装器、一个用于 .NET 的 python 包装器等。
所以这真的取决于你的需求是什么。如果您正在寻找在 Linux、Mac 和 Windows 上绘制具有原生外观的小部件的最简单方法,请使用 wxPython(WX 小部件的 Python 包装器)。如果跨平台不是您的需求之一,那么其他库可能会更有用。
我不会发布您的选项列表,而是给出我的拙见:
我爱上了 wxPython。
在 Tcl 时代,我曾在 C++ 和 Tk 中使用过 Qt,但真正让我喜欢 wxPython 的是你使用它获得的演示。在演示中,您可以浏览作为框架一部分的所有不同的小部件框架等,查看源代码并实际查看它在运行时的外观。
我在构建和安装 Linux 版本时遇到了一些问题,但现在我有了它,我一直都在使用它。我已经将 wxPython 用于小型数据分析应用程序,并且我编写了几个与比较测试结果、合并源代码等相关的内部工具。
我发现这个链接很久了:http ://www.awaretek.com/toolkits.html 。它建议根据您的标准进行拍摄。对我来说,它一直建议使用 wxPython。无论如何,它会为您提供各种工具包的大量分数。适合我的可能不适合你。但它会告诉你所有的takeits如何根据你的标准进行评分,所以如果你因为某种原因不喜欢顶级工具包,你可以看到哪些最接近你的标准。
QT/GTK/WxWidgets(以前的 wxWindows)似乎是最成熟的跨平台 GUI 工具包之一。唯一的问题是没有安装 Python 的默认安装,因此您可能必须编译库。如果您想要无需安装即可运行的东西,那么请使用 TKInter,因为如前所述,它默认使用 Python 安装。
无论如何,我的标准是易用性为 9,文档/小部件成熟度为 10,安装基础为 10,gui 代码生成器为 5,windows/linux 的本机外观和感觉为 10,最后两个为 1 和 5,我'我对 Mac OSX 不太感兴趣(即使这里有 10 也建议使用 wxpython)。
PythonCard真的很容易使用。这就是我推荐的。
这是他们的文章:
PythonCard 是一个 GUI 构建工具包,用于使用 Python 语言在 Windows、Mac OS X 和 Linux 上构建跨平台桌面应用程序。
PythonCard 的座右铭是“简单的事情应该是简单的,复杂的事情应该是可能的”。
如果您想以最少的工作量和编码快速轻松地开发图形应用程序,PythonCard 非常适合您。Apple 的 HyperCard 是我们的灵感之一;简单,但功能强大。
PythonCard 使用 wxPython。如果您已经熟悉 wxPython,只需将 PythonCard 视为一种编写 wxPython 程序的更简单方法,其中包含大量示例和工具供您复制和子类化,以及帮助您构建跨平台应用程序的工具。
EasyGUI 与其他 GUI 的不同之处在于 EasyGUI 不是事件驱动的。它允许您以传统的线性方式进行编程,并在需要时为简单的输入和输出设置对话框。如果您还没有学习 GUI 编程的事件驱动范式,EasyGUI 将使您能够立即高效地完成非常基本的任务。稍后,如果您希望过渡到事件驱动的 GUI 范例,您可以使用更强大的 GUI 包来实现,例如 anygui、PythonCard、Tkinter、wxPython 等。
WX 在 Mac 上有问题。
我在这里看了一下,因为我想获得一个事件驱动的 GUI API 来在 Python 中做一些事情。作为 MatPlotLib 的一部分,我在我的 mac 上安装了 wx,但它不能正常工作。它不会从键盘输入。我已经在三个不同的 Mac 操作系统上安装了 3 次,虽然第一次可以正常工作,但另外两次我遇到了这个问题。
这个版本我使用的是 Enthought 的发行版,所以不需要安装。当我单独安装它时,有很多依赖安装,所以它是一个试用安装。
从我在这里阅读的内容来看,我会给 Tkinter 一个机会,因为这需要简单且跨平台,但我想我只是与您分享以上内容。我喜欢 Mac OS 有很多不同的原因,但是 python 工具在 Windows(可能还有其他 Linux)上安装起来要容易得多。我只是想我会在这里给出一个Mac的观点。
我喜欢 wxPython 或 Tk。
Tk 带有标准的 Python 发行版,因此您不需要安装任何其他东西。
wxPython (wxWigets) 看起来更强大,看起来更漂亮。它也可以很好地跨平台运行(尽管并不完美,因为它在不同的系统类型上使用了不同的底层图形 API)
我更喜欢 PyGTK,因为我是一个 GNOME 人。使用 PyGTK 对我来说感觉很 Python。代码组织感觉一致,文档干净透彻,而且它是一个非常容易习惯的工具包(可能是 Treeviews 除外)。
不存在用于 Python 的易于使用的 GUI 创建器。考虑到像 AutoIt 和 AutoHotkey 这样的小型脚本语言具有出色且非常易于使用的 GUI 制造商,这真是太神奇了。来吧,Python的追随者,你不能做得更好吗?
wxPython,我假设 PyGTK 也可以使用 wxGlade 来帮助您设计您将创建的大多数 UI。这是一个很大的优势。在准备好之前,您不必学习如何手动编写 GUI。我直接从 wxGlade 制作了几个 GUI 程序,直到我对 wxPython 的工作方式感到足够熟悉以进行手动编码。
PyQt 有一个类似的图形布局设备,但我从来没有运气好让 PyQt 正确编译。也缺乏说明如何创建最终 Python 代码的教程和文档;我发现的许多文档都提到了 Qt 的 C++ 版本。
Tkinter 适合快速和肮脏的程序,但实际上,如果您使用 wxGlade,使用 wxPython 制作程序可能会更快。至少,您可以使用 wxGlade 向客户端显示程序的可视化表示,而不是花时间手动编写“虚拟”程序。
有 python 特定的 gui-api,例如 kivy(后继或 pymt)、pygui(基于 pyrex)、pyui 和 nufox,它们无法与更强大的工具包(如 wxpython、pyqt、pygtk 和 tkinter)相比。
它们只是额外的可选工具。
它们唯一的独特之处在于它们是特定于 python 的 api,就像有 prima (perl-specific api) 和 shoes (ruby-specific api) 一样。它有助于我们理解,当 tk 是 api 的基于 tcl 的端口时(而其他是基于 c 和 c++ 的),那么这些 api 是专门为各自的三种脚本语言完成的。
其中,kivy 是最健壮的,而 pygui 的编码被提到非常类似于 python,pyui 最不健壮但值得尝试,所有这些都应该是可移植的,无论 python 或基于 python 的应用程序在哪里。
然后是jpype,它是一个可以与jython和pydev一起使用的工具包,它实际上是在python/jython-interface下定制的java的japi。