有没有适用于Python的图形用户界面设计工具?

有没有像Java的NetBeans一样的GUI IDE来编写Python程序?
我想要一个可以像使用NetBeans或Eclipse中的Swing组件那样拖放测试框和标签的IDE。
或者在NetBeans或Eclipse本身中是否有相应的插件?

你有没有在Ubuntu软件中心里看过开发工具>Python下列出的一些项目? - Knowledge Cube
5我个人推荐尝试根据教程手工制作一些东西,因为如果你不理解你所绘制的元素是如何相互作用的,那么你将很难使按钮等功能正常运作。 - Ivo Flipse
1请注意,对于任何非平凡的事情来说,不使用Glade或类似工具的GTK应用程序很快会变得相当丑陋和复杂。即使使用了Glade,您仍然有很多机会了解pygtk API。 - Stefano Palazzo
我给任何类似于Visual Studio的Python工具点赞了吗? - abdul qayyum
9个回答

Glade 安装 Glade

如果你想要一个所见即所得的GUI设计工具,Glade是你最好的选择:

首先,从软件中心安装glade。 创建你的GUI,保存为myapp.glade。 转到信号选项卡,设置回调函数,例如on_window1_destroy。 在你的Python程序中,告诉GTK加载UI定义。
import gtk
class MyApp (object): def __init__(self): self.builder = gtk.Builder() self.builder.add_from_file("myapp.glade") self.builder.connect_signals(self)
def run(self): self.builder.get_object("window1").show_all() gtk.main()
def on_window1_destroy(self, *args): gtk.main_quit()
MyApp().run()
在设置好一切之后,您可以直接开始Glade教程(正如Jeremy Kerr在他的回答中提到的那样)。首先学习不同的布局选项和信号。

快速地 安装迅速

当您对Glade感到舒适时,您可以通过Quickly开始使用它,这是一组程序,可使开发软件中的常见任务变得非常容易。 它处理翻译,存储配置,打包,包括PPA的launchpad集成等等:

sudo apt-get install quickly
quickly create ubuntu-application hello-world
cd hello-world/

快速创建一个巨大的项目,其中已经设置好了一切所需的内容。一个图形用户界面(GUI),翻译文件,通过desktopcouch进行配置等等。

你将会看到快速为你设置了几个窗口(主应用程序,配置以及关于对话框)。要开始编辑你的GUI:

  • 运行 quickly design

enter image description here

  • 要访问应用程序的代码,请运行quickly edit

  • 转到HelloWorldWindow.py文件

  • 现在开始添加信号处理程序和逻辑。

最后,要运行应用程序,请输入quickly run

此时,您可以查阅PyGTK文档以了解有关信号、信号处理程序签名、不同小部件方法等的信息。


另外还有一些相关问题:


2这个答案太好了,将成为其他人的参照标准 :) - Nathan Osman
1我发现Glade是一个糟糕且有很多错误的RAD工具。 - renatov

Qt-Designer

PyQt 自带 QtDesigner,这是一个非常不错的图形化 GUI 编辑器,如果你喜欢使用 Qt 框架来编写应用程序的话。

Qt Designer screenshot

Qt Creator

Qt的新集成开发环境(IDE)完全支持设计小部件(如上图所示)和QtQuick应用程序,后者更适合轻量级、流畅、触摸屏应用(例如平板电脑/移动应用)。

<![QtCreator IDE][5]>

<无法找到qt-project.org/uploads/image_upload/creator_30_designer_mobile_app.png>


你是想要一个完整的集成开发环境(即代码编辑器、运行时环境、UI布局工具),还是只需要一个用来创建UI的工具?
如果你需要一个完整的编程环境,可以看看Quickly工具集
如果你只是想设计界面,可以使用'glade'设计师来使用GTK小部件布局你的界面,然后将该UI定义加载到任何Python程序中。有一个GTK+和Glade3 GUI编程教程(包含Python和C示例)。

Eric IDE

试试Eric IDE吧。我认为它是Python和Qt4最好的IDE。

Eric是一个使用PyQt和QScintilla编辑器小部件编写的功能齐全的Python IDE。

一些亮点:

  • 任意数量的编辑器,可配置语法高亮、代码折叠、自动缩进和括号高亮。
  • 集成的项目管理功能,用于组织您的项目。项目浏览器在各自的选项卡上显示所有源文件、所有表单和所有翻译。源浏览器具有内置的类浏览功能。
  • Python 和 Ruby 的集成和全功能调试器。
  • Python 和 Ruby 的交互式 shell。
  • 用于浏览目录结构的资源管理器窗口,对于 Python 文件具有内置的类浏览功能。
  • 在调试程序时显示当前作用域中的局部和全局变量的变量窗口。
  • 与 Python 模块 "unittest" 集成的界面。
  • 集成的帮助查看器,用于显示 HTML 帮助文件。或者您可以选择使用 Qt-Assistant 查看帮助文件。
  • 以不同语言显示用户界面的能力。
  • 从 eric5 中启动 Qt-Designer 和 Qt-Linguist 的能力。
  • 在 IDE 中编译 Qt-Designer 表单,生成 Qt-Linguist 文件并发布它们的能力。

要在当前支持的所有 Ubuntu 版本中安装 Eric IDE,请打开终端并输入:

sudo apt install eric

Eric IDE


2为什么这个被踩了?Eric是一个很好的Python GUI,它集成了QT开发。它可以设计GUI(使用QT Designer),甚至可以将.ui文件编译成Python代码(无需使用命令行)。它有点像pyQt的Eclipse或Visual Studio。对我来说有点太重了,但对其他人来说是一个有趣的选择。 - Javier Rivera
@JavierRivera:可能是因为这看起来更像是一个集成开发环境(IDE),而不是一个图形用户界面(GUI)设计工具。 - Jeremy Kerr

wxFormBuilder

具体还取决于您想使用哪种小部件工具包。我更喜欢使用python的wxWidgetswxPython

所以我在构建GUI时更偏向于wxFormBuilder,可以通过以下PPA获取:

它具有简单易用的小部件拖放功能,可以将小部件轻松拖放到画布上,并且您可以快速切换到代码选项卡以查看它生成了什么内容,对于我这样一个没有受过专业训练的人来说,它的代码干净整洁。正如其名字所示,它是一个表单构建工具,专门用于此。因此,不要期望用它开发完整的项目,但是如果您喜欢将表单设计与分析代码分开,则它能很好地完成工作。

1标准的Ubuntu版本由于某些原因无法生成Python代码。希望PPA版本不会有这个问题。 - Christoph
1是的,PPA版本可以生成Python代码。 - Christoph

有个新人来到城里:Camelot。它的设计目标是快速构建图形用户界面(GUI)。它帮助你专注于应用程序,而不是GUI代码。维护者说:

Camelot提供了在Python、SQLAlchemyQt之上构建业务应用程序的组件。它受到Django管理界面的启发。你可以使用Camelot以极快的速度开发简单和复杂的业务应用程序。

这个框架已经在国际Python会议上多次展示过。它的优点包括:

开发者优势
- 基于高质量和经过验证的技术 - 视图与数据模型绑定,无需编写代码 - 可通过操作框架进行定制 - 从入门教程到报表打印都有详细文档支持 - 部署解决方案快如闪电
用户优势
- 响应式且熟悉的图形界面 - 高质量的编辑器和控件 - 大量内置功能,如导入、导出、打印、备份和恢复 - 与业务流程相匹配
更多信息、演示、YouTube视频等,请访问http://www.python-camelot.com/
免责声明:我亲眼目睹了这个软件的运行,并与开发人员交谈过。虽然可能存在偏见,但我真诚地认为这是一款优秀的软件。

SharpDevelop (锐开发)

SharpDevelop screenshot

SharpDevelop是用于开发基于.Net Framework的应用程序的工具。它支持IronPython,并且拥有WinForm、Silverlight和WPF应用程序的GUI设计器。虽然Visual Studio也有各种针对IronPython的GUI设计器,但它没有WinForm的GUI设计器。

没有人提到在其他语言中非常有用的工具,而且对于初学者来说可能不太熟悉 - Eclipse有一个针对Python的视角称为PyDev。

Eclipse可以构建GUI吗?即使是在Java中? - Eric Wilson
@FarmBoy:可以的。 - RolandiXor
1PyDev透视图有GUI设计器吗? - Stefano Palazzo