当前位置:首页> 正文

关于用户界面:有哪些 Python GUI API?

关于用户界面:有哪些 Python GUI API?

What Python GUI APIs Are Out There?

简单问题:

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

我不是在这里寻找一场宗教 war ,我只是想很好地处理 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 的一些具体想法:

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

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

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


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.


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


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

我爱上了 wxPython。

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

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


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

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


WX 在 Mac 上存在问题。

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

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

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


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 网站


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


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


我喜欢 wxPython 或 Tk。

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

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


有 python 特定的 gui-api,例如 kivy (successor or 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。


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

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

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


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

API 缺乏一致性,但您很快就会习惯。

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


展开全文阅读

相关内容