Python 圖形使用者介面程式設計
這一篇是GUI Programming in Python中譯版本。
Python 有一大堆的GUI架構(或工具包)可以用,從 Tkinter (Python 本身內建,使用 Tk) 到一些其他跨平台的解決方案,以及繫結於特定平台(也叫 “原生”)的技術。
跨瀏覽器架構
-
Package
Target
Notes
所有主要的Web瀏覽器
有完整的元件工具包、Python-to-Javascript 編譯器及AJAX 函式庫,提供MVC架構的”V”視圖,查看 PyjamasDesktop
跨平台架構
雖然有很多其他的技術也積極提供Python的繫結,但是Python架構所依據的主要跨平台的技術包括 Gtk、 Qt、 Tk 及 wxWidgets。
-
Package
Target
Notes
many
(“Anygui 不再積極發展或支援”) 執行在很多GUI後端服務的單獨原始碼,這些服務包括很多本表所列的以及 ncurses
many
完全自動的連結繪圖介面元件及應用程式變數。
Dabo
Dabo 是一個三層式跨平台的應用發展架構,適用Python 頂上的 wxPython GUI 工具包寫成 – 察看 http://dabodev.com/
Tk
EasyGUI 是很簡單的一個模組,很簡單的Python GUI 程式設計。
FXPy
FOX
最後釋出是在 2002;好像死了。
Gnome
Gnome 平台繫結:bonobo、 bonoboui、 gconf、 gnome、 gnomecanvas、 gnomevfs、 gnomeui
Gnome
Gnome 桌面管理系統程式繫結:metacity、 nautilus、 gnomeprint、 gtksourceview、 gtop、 media-profiles、 totem、 wnck
Gnome
附加的 Gnome 繫結: libegg、 gda、 gtkmozembed、 gtkspell、 gksu、 gdl、 gtkhtml2
與GUI builder整合的GUI 引擎,需要 Need Alpha testers。
.NET/Mono
(原來是 MS’) .NET 平台的Python,查看http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython 更多詳細資訊。
Java
Jython 是Python完整無縫的與Java平台整合之高級、動態、物件導向語言的實作,查看 http://www.jython.org/Project/index.html 更多詳細的資訊。
libavg
MacOS, Linux
嚴格來說不是 GUI 工具包,但是一高級多媒體架構可以允許建構豐富的多媒體的圖形使用介面,http://www.libavg.de。
Lucid
Windows, GTK, MacOS
一個使用每個作業系統的原生GUI元件的抽象層跟聰明佈局的引擎,之前叫做 “Claro 架構” – 察看 http://www.lucidtoolkit.org/
Nufox
XUL (many)
Nufox 是一個 python XUL 工具包是由Twisted 網路架構及 Nevow基礎寫的,這個觀念是你不用寫XUL markup只要寫伺服端跨平台的 XUL 應用程式就可以,只需一點點的 javascript,其他的都可以舒服的用 python, http://nufox.berlios.de/
many
GUI 函式庫,只是Python “像python的 javax.swing”Model/View/Controller的表面,查看 http://ocean.sourceforge.net/
支援 Windows/Unix/Mac – 察看 http://pyfltk.sourceforge.net
Gtk
pango、 atk、 gtk 及 libglade 的繫結
Tkinter
MacOS / Gtk
抽象的像python的 API 封裝不同的平台;可以在 MacOS X/Carbon 及 Unix/Gtk執行
Many
使用 PyWebkitGtk 的完整的元件工具包來作困難吃力的工作,提供了MVC架構的”V”視圖。另外查看 Pyjamas
Qt / KDE
Python KDE 函式庫的外覆
PyPicoGUI
含括在主要picoGUI版本的python 函式庫
Qt
Python 的 Qt 應用程式發展架構的繫結
PySWT
SWT
PySWT 是IBM Eclipse SWT 函式庫的Python繫結,提供 Python 一個跨平台的原生外觀的GUI,查看 http://www.cs.nyu.edu/zilin/pyswt/pmwiki.php?n=PySWT.Introduction
是一個架構也是GUI builder,可以在ShowMeDo的 PythonCard apps PythonCard tutorial videos含括 wxPython 程式碼
Web Browsers
PyWebkitGtk 是webkit的 Python 繫結,包括 DOM 模型的處理、Javascript 的執行、外掛支援 (如 Flash) 及 (在 TODO 列表上) SVG 畫布的支援,是相當有威力且完善的應用發展,查看 PyjamasDesktop 有簡單使用的 API。
OpenGL
OpenGL程式用來產生GUI的特殊GUI工具包。
OLPC XO with Linux
共同教育軟體的使用者介面
Tk
Python “標準的” GUI 函式庫
Tk extension
TkZinc 是Tk畫布的擴充,有透明、灰階及變形
VTK
many
Visualization ToolKit (VTK) 是開放原始碼、免費的3D電腦繪圖軟體系統、影響處理及視覺化的工具包,查看 http://public.kitware.com/VTK/index.php 更詳細的資訊。
WxPython的一個外覆,較簡單並且更像 “pythonic”
現在有支援 Windows/Unix/Mac – 察看 http://www.wxwidgets.org,在 ShowMeDo 的 wxPython tutorial videos 有寫一個繪圖應用程式
python/any
uxPython 是一個純的 python 跨平台的UI工具包用來建構極好的使用者介面,它是從Java 高度革新的Swing 工具包獲得提示及網路上極具創造力的工作所得到的靈感,uxPython 被發展來帶歡樂及生產力給桌面管理系統程式的發展, http://www.uxpython.com
XGui
XGui
XGui 是一個使用C、C++及Python繫結的跨平台的元件集,真的支援在Gtk上的*nix及Win32上的Windows – 查看http://www.objectblues.net/wiki/show/XGui 更多資訊。
特定平台的架構
-
Package
Target
Notes
BeOS
MacOS
支援 OSX 及 OS9
MacOSX
支援Mac上的 Cocoa Aqua GUIs
Windows
有與Visual Studio相同介面的IronPython 免費 GUI 實作。
Windows
Venster 是基於ctypes ffi函式庫的高度原生Windows GUI的Python工具包,Venster的目標是作為在標準的Win32 API下一個很輕量的外覆,使得它容易用純Python來寫靈巧的視窗應用程式。
Windows
熟知的組件名稱: PythonWin (UI)、 Win32Com ( COM/ActiveX)、 Win32 (一些API其他的部份)
-
Windows
使用Pytjon及Delphi發展的 OpenSource IDE
GUI 設計工具及 IDE
-
IDE
Target
Notes
從Glade GUI定義自動建構 GUI 應用程式, GPL
Commercial, $50-400
GPL, Alpha, 但開始變得成熟用來偵錯wxPython程式碼!
GPL
免費,開放原始碼,同時也支援 wxRuby 及 wxPerl 。
Gazpacho
GPL
GPL
有整合式的GUI buiilder的GUI 引擎,需要 Alpha testers。
Windows Application
與Visual Studio有相同介面的IronPython實作。
Commercial
Tkinter, Tix
?
Python License. Alpha.
PythonWorks 不再被發展,他們仍然支援現有的客戶,但不再授權給新客戶。
一種QT的表單設計工具有 Commercial 及 GPL 兩種版本,可以用在 Eric3 及 Eric4。
Commercial Student EUR 29, 單一使用者 EUR 129
MIT License, Alpha.
Python Tkinter
有完整的GUI、 跨瀏覽器、檔案管理程式碼,Licensed under the GPL。
uxPython
以XML為基礎及XUL靈感的格式的商業用完整的拖曳的樣式設計- 現在有pre-alpha 二進制預覽版
連結
CameronLaird的Python GUI個人筆記 http://phaseit.net/claird/comp.lang.python/python_GUI.html 包含了25個以上關於python連結的GUI的工具包跟技術的連結。
其他的地方可以看Thinki的 PythonGuis 及 http://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://www.awaretek.com/toolkits.html – 選擇你的 GUI 工具包:找出你最喜歡的Python GUI工具包,快捷的 cgi 成用程式可以幫你作一個選擇,查看 Python City。
http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python – 描述幾個IDE及GUI Builders 的維基文章。
編者筆記
上述的列表在新增加新的的架構或工具時應用字母次序來排列,請參考這一點。
目前這一節還不完整,假如你沒有找到你要的資訊請不要太失望,但也請你貢獻可以新增的任何資訊,任何關於GUI及開發工具有固定的格式的資訊可以讓他們更容易地比較是有用的 (查看 WebProgrammingTemplate 及 WebProgrammingTemplateHelp),有些分類:直接支援的元件、 附加的元件、佈局管理器等等,或許在ChoosingGuiToolkits 有對每個工具包可以回答你的問題。
歷史上的今天
- 2011: GP 超霸充電池高電力鎳氫(NiMH)電池第十一次使用
- 2010: Knowledge Gained by Bring Back the Door
- 2009: 取自天然素材的SKIN79 BB霜
- 2009: 工作達人的Google Page Speed
- 2009: [J2SE6]Thinking in Java 4th Edition Source Code
- 2008: Swing 架構概述-Swing Architecture Overview
- 2007: 解決卡巴斯基6.0把Google Adsense廣告去掉的問題












