Python有哪些GUI API可用?

12

简单问题:

  • 有哪些 Python GUI API 可供使用?每种 API 的优势是什么?

我不想掀起宗教战争,只是想了解 Python GUI API 中所有可用的内容。


http://scriptedforms.com.au 是一个非常棒的工具包,可以让你快速使用 Markdown 创建 Python GUI。 - SimonBiggs
15个回答

15

1
你漏掉了“任何给定API的优势”这部分。你链接的页面只是提供了每个API的描述。 - Seun Osewa

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的一些具体想法:
  • 有三种(?)不同的方法来布置小部件。忽略其中两个;只使用Sizers。即使如此,您也可以仅使用BoxSizer和GridBagSizer完成任何布局。
  • 所有wx小部件都有ID。您不需要关心ID是什么,但是在过去(我认为)您确实需要知道,因此一些旧代码将充斥着显式ID分配。大多数演示代码将在ID参数处具有-1(尽管所有方法都将ID作为关键字参数,其默认值为-1)
  • 确保您获取标准的wxWidgets文档和wxPython演示文档 - 您需要它们两个。
  • 如果您想要在Windows XP上使用wxPython并使用py2exe使其看起来很好,您需要在setup.py中进行一些技巧。请参见此处

  • 如果你正确地包装Tkinter,你仍然可以使用IDLE交互式地构建GUI。 - Noctis Skytower

    4

    3

    大多数 Python GUI API 都是最常见的 C/C++ GUI API 的包装器。你可以使用 gtk 的 Python 包装器、qt 的 Python 包装器、.NET 的 Python 包装器等等。

    因此,它真正取决于您的需求。如果您正在寻找一种在 Linux、Mac 和 Windows 上绘制本地外观小部件的最简单方法,则选择 wxPython(WX Widgets 的 Python 包装器)。但是,如果跨平台并不是您的需求,其他库可能更有用。


    3

    我不会列出你的选项,而是给出我的谦虚意见:

    我热爱wxPython。

    我曾经使用过C++中的Qt和Tcl时代的Tk,但真正让我喜欢wxPython的是它附带的演示。在演示中,您可以浏览框架中包含的所有不同的小部件、帧等,查看源代码,并在运行时实际查看其外观。

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


    3
    我很久以前发现了这个链接:http://www.awaretek.com/toolkits.html。它提供了一个基于你的标准的工具包建议,对于我来说,它总是建议使用wxPython。无论如何,它会给出各种工具包的得分。适合我并不一定适合你。但是它可以为你提供所有工具包根据你的标准得分的情况,所以如果你不喜欢排名第一的工具包,你可以看看哪些工具包最接近你的标准。
    QT/GTK/WxWidgets(以前称为wxWindows)似乎是最成熟的跨平台GUI工具包之一。唯一的问题是Python的默认安装中没有安装其中任何一个,所以您可能需要编译库。如果您想要一个无需安装即可运行的东西,那么请使用TKInter,因为正如已经提到的那样,它是Python默认安装的一部分。
    无论如何,我的标准是:易用性得分为9,文档/小部件的成熟度得分为10,已安装基数得分为10,GUI代码生成器得分为5,本地外观和感觉在Windows/Linux上都得分为10,在最后两个标准中,我不是很喜欢Mac OSX(即使在这里得分为10,它仍然建议使用wxPython)。

    我深入研究了那个页面的代码,但它毫无意义。除非你只关心学习的难易程度或在PDA上运行,否则几乎不可能有任何东西比wxPython更高效。它甚至会在你只关心已安装基础的情况下选择wxPython而不是Tkinter - 而Tkinter自带Python! - JasonFruit
    你说得对,评分方法很奇怪。虽然安装基数也代表着流行度,但基于这一点很难说清楚。就流行度而言,我似乎看到人们更喜欢Qt/GTK和Wx,而不是tkinter。但就安装基数而言,tkinter无人能敌。 - Cervo

    3

    PythonCard 非常易于使用。这是我推荐的。

    以下是他们的介绍:

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

    PythonCard 的座右铭是 "简单的事情应该简单,复杂的事情应该有可能实现"。

    如果你想快速轻松地开发图形应用程序,并且最小化代码编写工作量,那么 PythonCard 就适合你。苹果的 HyperCard 是我们的灵感之一;简单而强大。

    PythonCard 使用 wxPython。如果您已经熟悉 wxPython,请把 PythonCard 看作是使用了大量样例和工具更为简单的方式来完成 wxPython 程序,并帮助您构建跨平台应用程序的工具和子类。


    PythonCard的安装和运行非常简单。但是它附带的GUI工具有点笨重。 - Jon W

    2

    WX在Mac上存在问题。

    我想要使用一个事件驱动的GUI API在Python中完成一些任务,所以我在这里查看了相关信息。我已经安装了MatPlotLib,并且其中包含了wx,但它无法正常工作。它无法从键盘输入。我在三个不同的Mac操作系统上分别尝试了三次安装,虽然第一次可以正常运行,但后两次都遇到了相同的问题。

    我正在使用Enthought的分发版本,因此不需要进行安装。当我单独安装它时,有很多依赖项需要安装,这是一个试炼。

    根据我在这里阅读的内容,我将尝试使用Tkinter,因为它需要简单且跨平台,但我想与您分享上述内容。我喜欢Mac OS的许多不同之处,但是Python工具在Windows(以及可能其他Linux)上更容易安装。我只是想在这里提供一个Mac的观点。


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

    1

    Python并没有一个易于使用的GUI创建器,这真是惊人的事实。尤其当像AutoIt和AutoHotkey等小型脚本语言都有伟大且非常简单易用的GUI制作工具时。来吧,Python追随者们,难道你们不能做得更好吗?


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接