12

简单的问题:

  • 有哪些 Python GUI API 以及任何给定 API 的优势是什么?

我不是在这里寻找一场宗教战争,我只是想很好地处理 Python GUI API 方面的所有内容。

4

15 回答 15

15

这是一个很好的清单。

于 2008-09-18T16:04:43.180 回答
11

我用过 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 的一些具体想法:

  • 有三种 (?) 不同的方式来布置小部件。忽略其中两个;只需使用 Sizer。即便如此,您也可以仅使用 BoxSizer 和 GridBagSizer 进行任何布局。
  • 所有 wx 小部件都有 ID。你不需要关心 ID 是什么,但在过去(我认为)你确实需要知道,所以一些旧代码会被明确的 ID 分配所淹没。并且大多数演示代码在任何地方都会有 -1 作为 ID 参数(尽管这些方法都有 ID 作为关键字参数,无论如何默认为 -1)。
  • 确保您获得了标准的 wxWidgets 文档以及 wxPython Demo——您都需要它们。
  • 如果您想将 wxPython 与 py2exe 一起使用,并且希望它在 Windows XP 上看起来不错,则需要在 setup.py 中添加一些技巧。看这里
于 2008-09-18T22:37:04.983 回答
4

如果您对 Qt 有经验或兴趣,那么 PyQt 非常好。

http://www.riverbankcomputing.co.uk/software/pyqt/intro

于 2008-09-18T16:06:07.593 回答
3

大多数 python GUI API 将封装最常见的 c/c++ GUI API。你有一个用于 gtk 的 python 包装器、一个用于 qt 的 python 包装器、一个用于 .NET 的 python 包装器等。

所以这真的取决于你的需求是什么。如果您正在寻找在 Linux、Mac 和 Windows 上绘制具有原生外观的小部件的最简单方法,请使用 wxPython(WX 小部件的 Python 包装器)。如果跨平台不是您的需求之一,那么其他库可能会更有用。

于 2008-09-18T16:12:15.347 回答
3

我不会发布您的选项列表,而是给出我的拙见:

我爱上了 wxPython。

在 Tcl 时代,我曾在 C++ 和 Tk 中使用过 Qt,但真正让我喜欢 wxPython 的是你使用它获得的演示。在演示中,您可以浏览作为框架一部分的所有不同的小部件框架等,查看源代码并实际查看它在运行时的外观。

我在构建和安装 Linux 版本时遇到了一些问题,但现在我有了它,我一直都在使用它。我已经将 wxPython 用于小型数据分析应用程序,并且我编写了几个与比较测试结果、合并源代码等相关的内部工具。

于 2008-09-18T16:25:51.133 回答
3

我发现这个链接很久了: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)。

于 2008-09-18T16:40:49.567 回答
3

PythonCard真的很容易使用。这就是我推荐的。

这是他们的文章:

PythonCard 是一个 GUI 构建工具包,用于使用 Python 语言在 Windows、Mac OS X 和 Linux 上构建跨平台桌面应用程序。

PythonCard 的座右铭是“简单的事情应该是简单的,复杂的事情应该是可能的”。

如果您想以最少的工作量和编码快速轻松地开发图形应用程序,PythonCard 非常适合您。Apple 的 HyperCard 是我们的灵感之一;简单,但功能强大。

PythonCard 使用 wxPython。如果您已经熟悉 wxPython,只需将 PythonCard 视为一种编写 wxPython 程序的更简单方法,其中包含大量示例和工具供您复制和子类化,以及帮助您构建跨平台应用程序的工具。

于 2008-09-18T17:21:42.810 回答
2

EasyGUI 与其他 GUI 的不同之处在于 EasyGUI 不是事件驱动的。它允许您以传统的线性方式进行编程,并在需要时为简单的输入和输出设置对话框。如果您还没有学习 GUI 编程的事件驱动范式,EasyGUI 将使您能够立即高效地完成非常基本的任务。稍后,如果您希望过渡到事件驱动的 GUI 范例,您可以使用更强大的 GUI 包来实现,例如 anygui、PythonCard、Tkinter、wxPython 等。

易贵网站

于 2008-09-18T23:49:41.283 回答
2

WX 在 Mac 上有问题。

我在这里看了一下,因为我想获得一个事件驱动的 GUI API 来在 Python 中做一些事情。作为 MatPlotLib 的一部分,我在我的 mac 上安装了 wx,但它不能正常工作。它不会从键盘输入。我已经在三个不同的 Mac 操作系统上安装了 3 次,虽然第一次可以正常工作,但另外两次我遇到了这个问题。

这个版本我使用的是 Enthought 的发行版,所以不需要安装。当我单独安装它时,有很多依赖安装,所以它是一个试用安装。

从我在这里阅读的内容来看,我会给 Tkinter 一个机会,因为这需要简单且跨平台,但我想我只是与您分享以上内容。我喜欢 Mac OS 有很多不同的原因,但是 python 工具在 Windows(可能还有其他 Linux)上安装起来要容易得多。我只是想我会在这里给出一个Mac的观点。

于 2012-08-24T00:13:47.577 回答
1

我喜欢 wxPython 或 Tk。

Tk 带有标准的 Python 发行版,因此您不需要安装任何其他东西。

wxPython (wxWigets) 看起来更强大,看起来更漂亮。它也可以很好地跨平台运行(尽管并不完美,因为它在不同的系统类型上使用了不同的底层图形 API)

于 2008-09-18T16:15:25.400 回答
1

我更喜欢 PyGTK,因为我是一个 GNOME 人。使用 PyGTK 对我来说感觉很 Python。代码组织感觉一致,文档干净透彻,而且它是一个非常容易习惯的工具包(可能是 Treeviews 除外)。

于 2008-09-19T14:29:51.253 回答
1

不存在用于 Python 的易于使用的 GUI 创建器。考虑到像 AutoIt 和 AutoHotkey 这样的小型脚本语言具有出色且非常易于使用的 GUI 制造商,这真是太神奇了。来吧,Python的追随者,你不能做得更好吗?

于 2010-11-10T20:04:48.070 回答
0

我已经使用wxPython几年了,我非常喜欢它。wxPython 最棒的地方在于,在它运行的不同平台上,UI 都感觉是原生的(在 Windows 和 Linux 上表现出色,但在 OS/X 上则不那么好)。

API 缺乏一些一致性,但你很快就会习惯它。

您可以查看Testuff(无耻的插件,因为它是我自己的产品)来了解使用 wxPython 可以做什么(尽管我必须说,付出了相当多的努力)。

于 2008-09-18T19:15:28.247 回答
0

wxPython,我假设 PyGTK 也可以使用 wxGlade 来帮助您设计您将创建的大多数 UI。这是一个很大的优势。在准备好之前,您不必学习如何手动编写 GUI。我直接从 wxGlade 制作了几个 GUI 程序,直到我对 wxPython 的工作方式感到足够熟悉以进行手动编码。

PyQt 有一个类似的图形布局设备,但我从来没有运气好让 PyQt 正确编译。也缺乏说明如何创建最终 Python 代码的教程和文档;我发现的许多文档都提到了 Qt 的 C++ 版本。

Tkinter 适合快速和肮脏的程序,但实际上,如果您使用 wxGlade,使用 wxPython 制作程序可能会更快。至少,您可以使用 wxGlade 向客户端显示程序的可视化表示,而不是花时间手动编写“虚拟”程序。

于 2008-09-22T08:29:01.173 回答
0

有 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。

于 2012-09-23T10:35:31.420 回答