Python 图形使用者介面程式设计

/! 这一篇是GUI Programming in Python中译版本。

Python 有一大堆的GUI架构(或工具包)可以用,从 Tkinter (Python 本身内建,使用 Tk) 到一些其他跨平台的解决方案,以及系结于特定平台(也叫 “原生”)的技术。

知名的资讯作家蔡学镛虽然在GUI的开发瓶颈对Tk的gui设计不满意曾说:“像Tk这样的GUI套件往往太僵化,且不美观,做出来的GUI效果并不吸引人,甚至和OS的GUI差异太大,画面反而看起来显得诡异。”但也提到“尽管不合适,也只好将就着使用。”或许你可以在下面的资原中找到答案也不一定。

[adsense]

跨浏览器架构

  • Package

    Target

    Latest version

    Latest update date

    Notes

    PyJamas

    所有主要的Web浏览器

    0.8 2012-06-01

    有完整的元件工具包、Python-to-Javascript 编译器及AJAX 函式库,提供MVC架构的”V”视图,查看 PyjamasDesktop

跨平台架构

虽然有很多其他的技术也积极提供Python的系结,但是Python架构所依据的主要跨平台的技术包括 Gtk、 Qt、 Tk 及 wxWidgets。

  • Package

    Target

    Latest version

    Latest update date

    Notes

    AVC

    many

    0.8.3 2011-02-15

    完全自动的连结绘图介面元件及应用程式变数。

    Dabo

    WxPython

    0.9.12 2013-06-12

    Dabo 是一个三层式跨平台的应用发展架构,适用Python 顶上的 wxPython GUI 工具包写成 – 察看 http://dabodev.com/

    formlayout

    Qt

    1.0.15

    2013-08-27

    写GUI程式码时用于建构表单对话框/小工具来编辑不同型态的参数的小型Python模组

    GnomePython

    Gnome

    2.28.1 2010-03-31

    Gnome 平台系结:bonobo、 bonoboui、 gconf、 gnome、 gnomecanvas、 gnomevfs、 gnomeui

    GnomePythonDesktop

    Gnome

    2.32.0

    2010-09-28

    Gnome 桌面管理系统程式系结:metacity、 nautilus、 gnomeprint、 gtksourceview、 gtop、 media-profiles、 totem、 wnck

    GnomePythonExtras

    Gnome

    2.25.3

    2009-02-15

    附加的 Gnome 系结: libegg、 gda、 gtkmozembed、 gtkspell、 gksu、 gdl、 gtkhtml2

    gui2py

    WxPython (WxWidgets)

    0.9.3

    2013-08-26

    架构跟视觉化工具:GUI设计器、检查器跟属性编辑器,支援Python 2.5到Python 3.2;wxPython 2.8 “stable”、2.9 “classic”跟”phoenix” (py3k),功能有进阶的python化的MVC控制(ListView、GridView、TreeView)使用list- 跟dict-之类的物件;遮罩跟日历选择器控制;常用对话框;流动布局使用sizers跟基本的HTML;简化的事件模型(类似JavaScript),可以放wxPython程式码到应用程式中,现代化的PythonCard “fork” 大大地提升。

    guidata

    Qt

    1.6.1

    2013-06-17

    基于Qt Python系结模组PyQt4, guidata是一个可以有容易的资料及编辑跟显示来产生图形使用者介面的Python函式库,它也对PyQt4提供小帮手跟应用程式开发工具。

    IronPython

    .NET/Mono

    2.7.4 2013-09-07

    (原来是 MS’) .NET 平台的Python,查看http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython 更多详细资讯。

    Jython

    Java

    2.5.4rc1 2013-02-10

    Jython 是Python完整无缝的与Java平台整合之高级、动态、物件导向语言的实作,查看 http://www.jython.org/Project/index.html 更多详细的资讯。

    Kivy

    Windows, MacOSX, Linux, Android, iOS

    1.8.0 2014-01-30

    OpenGL ES 加速建构新的使用者介面的架构,Kivy支援每个平台原生的多点触控、滑鼠模拟器、整合的虚拟键盘、rst描绘器…

    libavg

    MacOS, Linux

    1.8.0 2014-02-15

    严格来说不是 GUI 工具包,但是一高级多媒体架构可以允许建构丰富的多媒体的图形使用介面,http://www.libavg.de

    PyFltk

    FlTk

     1.3.1  2012-02-19

    支援 Windows/Unix/Mac以及提供存取OpenGL功能,这表示他是快速、轻量的工具包。(Python 2 & 3)

    PyGame

    PyGame

    1.9.1

    2009-08-06

    主要是游戏程式设计的引进,只支援一个视窗。(Python 2 & 3)

    Pyglet

    Windows, MacOS, Linux

    1.2alpha1

    2012-07-13

    大量使用OpenGL的跨平台视窗跟多媒体函式库,现在只有Alpha版本。

    PyGObject

    Gtk?

    3.10.2

    2013-11-1

    PyGObject(又叫做PyGI),Python系结GLib/GObject/GIO/GTK+,用来取代PyGtk,见PyGobject

    PyGtk

    Gtk

     2.24.0  2011-04-01

    PyGtk,pango、 atk、 gtk 及 libglade 的系结,Gtk专案.上有很好的文件,包装使用一些C的程式设计风格,注意:新手鼓励透过PyGObject系结使用GTK+3,而不是使用GTK+2的PyGTK,Windows使用者可能还是想继续使用PyGTK直到有更多方便的安装程式出版为止。

    pygir-ctypes

    GObject Introspection

    0.1.1  2011-03-29 使用ctypes的纯Python GObject Introspection Repository (GIR)外覆程式,支援CPython >= 2.6、CPython 3.x, PyPy >= 1.4.0在有gobject introspection支援的所有平台上使用。

    PyGtk2Tk

    Tkinter

     0.2.0  2008-09-19

    PyGtk 用 Tkinter 包装,它是使用Tkinter(Tk)但不用改变 PyGtk 的程式码,只用在Python 2。

    PyGUI

    Cocoa / Gtk / Win32

     2.5.3  2011-07-16

    抽象的像python的 API 封装不同的平台;可以在 MacOS X/Carbon 及 Unix/Gtk执行

    PyjamasDesktop

    Many

    使用 PyWebkitGtk 的完整的元件工具包来作困难吃力的工作,提供了MVC架构的”V”视图。另外查看 Pyjamas

    PyKDE

    Qt / KDE

    Python KDE 函式库的外覆

    PyQt

    Qt

     5.2  2014-01-07

    Python 的 Qt 应用程式发展架构的系结(Python 2 & 3)

    PySide

    Qt

    1.2.1

    2013-08-16

    PySide专案提供Qt 跨平台应用程式跟UI架构的授权Python系结。

    PyWebkitGtk

    Web Browsers

     1.1.8  2010-08-07

    PyWebkitGtkwebkit的 Python 系结,包括 DOM 模型的处理、Javascript 的执行、外挂支援 (如 Flash) 及 (在 TODO 列表上) SVG 画布的支援,是相当有威力且完善的应用发展,查看 PyjamasDesktop 有简单使用的 API。

    Sugar

    OLPC XO with Linux

     0.98.5 2013-03-08

    共同教育软体的使用者介面

    TkInter

    Tk

     TK version varies by Python release and platform

    Python “标准的” GUI 函式库(Python 2 文件Python 3 文件Tk 8.5或以后的版本需要使用ttk (另外参阅Issue20565)

    Traits/TraitsUI

    Qt or Wx on Windows, MacOS, Linux

    4.0.0

    2013-12-03

    Traits/TraitsUI套件针对不同型态的物件藉着只专注在模型被检视及提供预设的小工具来建置可升级且跨平台的GUI,它抽离实作,现在可以使用PyQt、Pyside或WxPython,在最简单的范例里,可以自动产生一个编辑(Traits基础的)物件的使用者介面,对部份程式设计的使用者来说不需额外的程式码,更复杂的使用里,针对Traits-基础的物件可以实作Model-View-Controller (MVC)设计模式。

    VTK

    many

     6.1.0 2014-01-22

    Visualization ToolKit (VTK) 是开放原始码、免费的3D电脑绘图软体系统、影响处理及视觉化的工具包

    Wax

    WxWidgets

     0.3.33 2006-03-17

    WxPython的一个外覆,较简单并且更像 “pythonic”

    WxPython

    WxWidgets

     3.0.0.0  2013-12-25

    现在有支援 Windows/Unix/Mac – 察看 http://www.wxwidgets.org,在 ShowMeDowxPython tutorial videos 有写一个绘图应用程式

没有作用/不再维护

Package Target

Latest version

Latest update date

Notes

AnyGui

many

 0.1.1 2002-02-08

(“Anygui 不再积极发展或支援”) 执行在很多GUI后端服务的单独原始码,这些服务包括很多本表所列的以及 ncurses

FXPy

FOX

 1.0.5 2002-04-02

FXPy是一个Python扩充模组提供跨平台FOX GUI函式库一个介面,现在没有在开发,但是最新的版本可以跟FOX 1.0及Python 2.2相容。

Lucid

Windows, GTK, MacOS

 0.1  SVN only

(2013年四月连结不见了)一个使用每个作业系统的原生GUI元件的抽象层跟聪明布局的引擎,之前叫做 “Claro 架构”。

EasyGui

Tk

 0.96  2010-08-29

(有效日期2013/3/6 EasyGui 专案现在已关闭) EasyGUI 是很简单的一个模组,很简单的Python GUI 程式设计。

TkZinc

Tk extension

 3.2.2 2005-06-18

TkZinc 是Tk画布的扩充,有透明、灰阶及变形(没用的网站消失)

PySWT

SWT

 0.0.3  2005-06-28

PySWT 是IBM Eclipse SWT 函式库的Python系结,提供 Python 一个跨平台的原生外观的GUI,(Python 2.4) (没有作用:网页最后更新是2005

OcempGUI(Ocean Empire GUI)

Pygame

0.2.9 2008-05-10

基于Pygame用Python写的一个小型GUI工具包,提供辅助功能的支援。(没有作用:更新到2008

Nufox

XUL (many)

0.1.0 2005-10-13

Nufox 是一个 python XUL 工具包是由Twisted 网路架构及 Nevow基础写的,这个观念是你不用写XUL markup只要写伺服端跨平台的 XUL 应用程式就可以,只需一点点的 javascript,其他的都可以舒服的用 python,(Python 2.3或2.4)(没有作用:更新到2005

PyUi

OpenGL

 1.0 2003-08-17

OpenGL程式用来产生GUI的特殊GUI工具包。 (Python 2.2) (N没有作用:最后更新2003)

PythonCard

WxWidgets

 0.8.2  2006-05-22

是一个架构也是GUI builder,可以在ShowMeDoPythonCard apps PythonCard tutorial videos含括 wxPython 程式码 (没有作用:最后更新2006)

XGui

XGui

 ?SVN?  2008-03-02

XGui 是一个使用C、C++及Python系结的跨平台的元件集,真的支援在Gtk上的*nix及Win32上的Windows。(从2008开始程式码无法下载)

PyPicoGUI

PicoGUI

 0.46  2003-11-18

含括在主要picoGUI版本的python 函式库(网站从2004后就没有任何活动

特定平台的架构

  • Package

    Target

    Latest version

    Latest update date

    Notes

    BeThon

    BeOS

     0.5.4  ? Python 2.6到BeOS的窗口,也是Bethon BeOS API介面函式库。

    MacPython

    MacOS

     2.3.3 2004-04-02

    支援 OSX 及 OS9,见MacPython

    PyObjC

    MacOSX

    支援Mac上的 Cocoa Aqua GUIs

    PyMUI

    MorphOS

    0.7.0

    2013-12-27

    python的LGPL MagicUserInterface外覆程式,支援MorphOS 2.x。(Python 2.7)

    IronPython Studio

    Windows

     1.0  2007-12-10

    有与Visual Studio相同介面的IronPython 免费 GUI 实作。

    venster

    Windows

     0.72  2004-12-25

    Venster 是基于ctypes ffi函式库的高度原生Windows GUI的Python工具包,Venster的目标是作为在标准的Win32 API下一个很轻量的外覆,使得它容易用纯Python来写灵巧的视窗应用程式。

    Win32All

    Windows

    熟知的组件名称: PythonWin (UI)、 Win32Com ( COM/ActiveX)、 Win32 (一些API其他的部份)

    Ocean

    many

    0.2.3-r97 2007-04-02

    GUI 函式库,只是Python “像python的 javax.swing”Model/View/Controller的表面,查看 http://ocean.sourceforge.net/

    PyScripter

    Windows

    2.5.1

    2012-03-19

    使用Pytjon及Delphi发展的 OpenSource IDE

GUI 设计工具及 IDE

  • IDE

    Target

    Latest version

    Latest update date

    Notes

    Autoglade

    PyGtk

     0.5  2009-07-27

    Glade GUI定义自动建构 GUI 应用程式, GPL

    BlackAdder

    PyQt

    1.0 2003-09-11

    Commercial, $50-400(网站无法使用,Demo版可以在此找到:https://archive.org/details/tucows_332773_BlackAdder)

    BoaConstructor

    WxPython

     0.6.1 2007-07-05

    GPL, Alpha, 但开始变得成熟用来侦错wxPython程式码!

    The Eric Python IDE

    PyQt

     5.4.2 2014-03-09

    GPL,完整功能的Python跟Ruby编辑器及IDE,整合了高度灵活的Scintilla编辑器控制。(Python 2 & 3版)

    FarPy GUIE

    WxPython

     0.5.5  2007-04-14

    免费,开放原始码,同时也支援 wxRuby 及 wxPerl 。

    gui2py

    WxPython

    视觉化的GUI设计器、检查器及属性编辑器(可内嵌)PythonCard “fork”. LGPL3。

    Gazpacho

    PyGtk

     0.7.2 2007-07-29

    GPL,以视觉化的方法为你的GTK+程式建构一图形使用者介面(GUI)。

    Glade

    PyGtk

     3.16.1  2013-12-18

    GPL,Glade是一个RAD工具,针对GTK+工具包及GNOME桌面环境允许快速且容易的使用者介面的开发。

    GWiz

    Tix

    有整合式的GUI buiilder的GUI 引擎,需要 Alpha testers。在lwickjr的python维基页面上档案已经不见 wiki page

    IronPython Studio

    Windows Application

    与Visual Studio有相同介面的IronPython实作。

    Komodo

    TkInter

    Commercial

    NodeBox

    MacOSX, Win, Linux

    3.0.38

    2014-01-24

    使用Python程式码来建构2D的视觉应用程式。

    PAGE

    Tkinter, Tix

     4.2.1  2014-02-21

    Windows、Mac跟Linux的GUI编辑器

    pygubu

    TkInter

    0.9.2

    2013-11-05

    来自Glade的灵感,GPL TkInter GUI产生器(汇出XML “.ui”档案)跟RAD工具inspired by Glade.

    PyScripter

    Windows

    2.5.1

    20120319

    使用Python跟Delphi开发的MIT开放原始码IDE,见PyScripter。(Python 2 & 3)

    PythonCard

    WxWidgets

     0.8.2  2006-05-22

    是一个架构也是GUI builder,可以在ShowMeDo的 PythonCard apps PythonCard tutorial videos含括 wxPython 程式码

    PythonToolkit (PTK)

    Windows/Linux/Mac

    13.01

    2013-03-07

    python的一个互动式环境,适合使用不同的GUI工具包(wxPython, TkInter, pyGTK, pyQT4 跟 PySide)于互动式的GUI程式设计

    PythonWorks

    TkInter

     1.3  2002/11/25

    PythonWorks 不再被发展,他们仍然支援现有的客户,但不再授权给新客户。

    rad2py

    gui2py & WxPython

    Rapid Application Development platform for python (including editor, debugger, visual designer, unit tests, etc.). GPLv3. Alpha.

    Qt Designer

    PyQt

    一种QT的表单设计工具有 Commercial 及 GPL 两种版本,可以用在 Eric3 及 Eric4。

    WxDesigner

    WxPython

    Commercial Student EUR 29, 单一使用者 EUR 129

    WxGlade

    WxPython

    MIT License, Alpha.

    xrope

    Python Tkinter

    有完整的GUI、 跨浏览器、档案管理程式码,Licensed under the GPL。

连结

CameronLaird的Python GUI个人笔记 http://phaseit.net/claird/comp.lang.python/python_GUI.html 包含了25个以上关于python连结的GUI的工具包跟技术的连结。

其他的地方可以看Thinki的 PythonGuishttp://sensei.co.il/python/ui.html

Opendocs 之前有一些Python的Qt程式设计可以线上阅读,但是该网域的拥有权好像已经移转,有一本关于Qt3的 PyQt 的书籍为 Boudewijn Rempt所著的 GUI Programming with Python: QT Edition 还有在, Mark Summerfield所著的最新的一本书 PyQt4, Rapid GUI Programming with Python and Qt 现在还有印刷可买线上也有 “宣传版”,更详细的资料可以在 PyQt Wiki 找到。

http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python – 描述几个IDE及GUI Builders 的维基文章。

编者笔记

上述的列表在新增加新的的架构或工具时应用字母次序来排列,请参考这一点。

目前这一节还不完整,假如你没有找到你要的资讯请不要太失望,但也请你贡献可以新增的任何资讯,任何关于GUI及开发工具有固定的格式的资讯可以让他们更容易地比较是有用的 (查看 WebProgrammingTemplateWebProgrammingTemplateHelp),有些分类:直接支援的元件、 附加的元件、布局管理器等等,或许在ChoosingGuiToolkits 有对每个工具包可以回答你的问题。

参考书籍:

深入浅出 Python