299
Comment:
|
12703
Boa Constructor not maturing, more like dying
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Some available GUI's for Python: | = GUI Programming in Python = Python has a huge number of GUI frameworks (or toolkits) available for it, from Tkinter (traditionally bundled with Python, using Tk) to a number of other cross-platform solutions, as well as bindings to platform-specific (also known as "native") technologies. |
Line 3: | Line 4: |
TkInter | {{{#!wiki note [[GUI Programming in Python]] is a similar page whose content could arguably complement this page with some editing. }}} |
Line 5: | Line 8: |
WxWindows | == Cross-Browser Frameworks == . || '''Package''' || '''Target''' || '''Notes''' || || PyJamas || All major Web Browsers || Comprehensive Widget toolkit, Python-to-Javascript compiler and AJAX library. Provides the "V" in MVC. See also PyjamasDesktop || |
Line 7: | Line 13: |
PyGtk / PyGnome | == Cross-Platform Frameworks == The major cross-platform technologies upon which Python frameworks are based include Gtk, Qt, Tk and wxWidgets, although many other technologies provide actively maintained Python bindings. |
Line 9: | Line 16: |
PyQt | . || '''Package''' || '''Target''' || '''Notes''' || || AnyGui || many || ("Anygui is no longer being actively developed or supported.") single source code runs on many GUI back-ends, including many in this table, plus ncurses || || [[http://avc.inrim.it/|AVC]] || Linux / many || Fully automatic, live connection among graphical interface widgets and application variables. || || [[http://dabodev.com/|Dabo]] || WxPython || Dabo is a 3-tier, cross-platform application development framework, written in Python atop the wxPython GUI toolkit || || EasyGui || Tk || EasyGUI is a module for very simple, very easy GUI programming in Python. || || FXPy || FOX || Last released 2002; presumed dead. || || GnomePython || Gnome || Gnome Platform bindings: bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomevfs, gnomeui || || GnomePythonDesktop || Gnome || Gnome Desktop bindings: metacity, nautilus, gnomeprint, gtksourceview, gtop, media-profiles, totem, wnck || || GnomePythonExtras || Gnome || Additional Gnome bindings: libegg, gda, gtkmozembed, gtkspell, gksu, gdl, gtkhtml2 || || [[lwickjr/Modules/|GWiz]] || [[Tix]] ||GUI engine with integrated GUI builder. Need Alpha testers. || || IronPython || .NET/Mono || Python for (originally MS') .NET platform. See http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython for more info. || || [[Jython]] || Java || Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. see http://www.jython.org/Project/index.html for more info. || || libavg || Windows, MacOS, Linux || Not strictly a GUI toolkit, but a high-level multimedia framework that allows construction of media-rich guis. http://www.libavg.de. || || Lucid || Windows, GTK, MacOS || An abstraction layer and clever layout engine that uses the native GUI widgets of each operating system. Previously known as "Claro Framework" - visit http://www.lucidtoolkit.org/ || || Nufox || XUL (many) || Nufox is a python, XUL toolkit written ontop of the Twisted Networking Framework and Nevow. The idea is that you should be able to write server-side cross platform XUL applications without writing XUL markup, with little javascript, all from the comfort of python, http://nufox.berlios.de/ || || [[Ocean]] || many || GUI library. Python only "pythonic javax.swing". Model/View/Controller, skinning. See http://ocean.sourceforge.net/ || || [[OcempGUI]] || Pygame || A small GUI toolkit written in Python based on Pygame. Provides accessibility support. || || PyFltk || FlTk || supports Windows/Unix/Mac - visit http://pyfltk.sourceforge.net || || PyGtk || Gtk || Bindings for pango, atk, gtk and libglade || || [[PyGtk-ctypes]] || Gtk || Python 2.x and 3.x series, Bindings for gtk (gobject, glib) based on ctypes || || [[PyGtk2Tk]] || Tkinter || PyGtk to Tkinter Wrapper runs PyGtk based code unchanged using Tkinter (Tk). || || [[PyGUI]] || MacOS / Gtk || Abstract, pythonic API encapsulating different platforms; At the moment runs on MacOS X/Carbon & Unix/Gtk || || PyjamasDesktop || Many || Comprehensive Widget toolkit that uses PyWebkitGtk to do the heavy lifting. Provides the "V" in MVC. See also Pyjamas || || [[PyKDE]] || Qt / KDE || Python wrappers for the [[http://www.kde.org/|KDE]] libraries || || [[http://pymt.eu/|PyMT]] || OpenGL, all platform || Python framework for doing multitouch GUI / Application || || PyPicoGUI || [[http://picogui.org/|PicoGUI]] || python library is included in the main PicoGUI release || || PyQt || Qt || Python bindings for the [[http://www.trolltech.com/products/qt/|Qt]] application development framework || || [[http://www.pyside.org/|PySide]] || Qt || The PySide project provides LGPL-licensed Python bindings for the [[http://www.trolltech.com/products/qt/|Qt]] cross-platform application and UI framework. || || PySWT || SWT || PySWT is a Python Binding to the IBM Eclipse SWT library, to provide Python with a cross platform native looking GUI, see http://www.cs.nyu.edu/zilin/pyswt/pmwiki.php?n=PySWT.Introduction || || PythonCard || WxWidgets || Both a framework and GUI builder. Can include wxPython code in PythonCard apps [[http://showmedo.com/videos/series?name=LIIBqnWDo|PythonCard tutorial videos]] at ShowMeDo || || PyWebkitGtk || Web Browsers || PyWebkitGtk is a Python Binding to [[http://webkit.org|webkit]], including DOM model manipulation, Javascript execution, plugin support (e.g. Flash) and (on the TODO list) SVG Canvas support, for extremely powerful and comprehensive applications development. See PyjamasDesktop for an easy-to-use API. || || PyUi || OpenGL || Specialized GUI Toolkit for generating GUIs for OpenGL programs. || || [[http://wiki.laptop.org/go/Sugar|Sugar]] || OLPC XO with Linux || User interface for collaborative educational software || || TkInter || Tk || Python's "standard" GUI library || || TkZinc || Tk extension || TkZinc is a extension of the Tk Canvas, with transparency, gradient, transformations || || VTK || many || The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization. See http://public.kitware.com/VTK/index.php for more info. || || [[Wax]] || WxWidgets || A wrapper to WxPython, easier and more "pythonic" || || WxPython || WxWidgets || supports Windows/Unix/Mac for now - visit http://www.wxwidgets.org, [[http://showmedo.com/videos/series?name=PythonWxPythonBeginnersSeries|wxPython tutorial videos]] at ShowMeDo on writing a graphical application || || XGui || XGui || XGui is a cross-platform widget set with C,C++ and Python bindings. Actually supports *nix over Gtk and Windows over Win32 - see http://www.objectblues.net/wiki/show/XGui for more info. || |
Line 11: | Line 57: |
FlTk | == Platform-specific Frameworks == . || '''Package''' || '''Target''' || '''Notes''' || || BeThon || BeOS || || || MacPython || MacOS || Supports both OSX and OS9 || || [[http://pyobjc.sourceforge.net/|PyObjC]] || MacOSX || Supports Cocoa Aqua GUIs on the Mac || || [[http://www.yomgui.fr/yiki/doku.php/en:dev:pymui:start|PyMUI]] || MorphOS || MagicUserInterface wrapper for Python. Support for MorphOS 2.x. || || [[http://www.codeplex.com/IronPythonStudio|IronPython Studio]] || Windows || A free GUI implementation of IronPython with the same interface as Visual Studio. || || [[venster]] || Windows || [[http://venster.sf.net|Venster]] is a highly native Windows GUI toolkit for Python based on the ctypes ffi library. The aim of Venster is to be a very lightweight wrapper around the standard Win32 API, making it easy to write slick windows applications in pure Python. || || Win32All || Windows || Also known by the names of its components: PythonWin (for the UI), Win32Com (for COM/ActiveX), Win32 (for some other parts of the API) || |
Line 13: | Line 68: |
FoxGui | Anyone for a GuiProgrammingShootout? |
Line 15: | Line 70: |
Some available GUI development tools: | == GUI Design Tools and IDEs == . || '''IDE''' ||'''Target''' ||'''Notes''' || || [[http://autoglade.sf.net/|Autoglade]] || PyGtk || Automagically creates GUI applications from [[http://glade.gnome.org/|Glade]] GUI definition, GPL || || BlackAdder || PyQt ||Commercial, $50-400 || ||BoaConstructor || WxPython ||GPL, Alpha, looks rather dead || || [[http://eric-ide.python-projects.org/index.html|Eric3 and Eric4]] || PyQt ||GPL || || [[http://farpy.holev.com|FarPy GUIE]] || WxPython || Freeware. Open-Source. Support wxRuby & wxPerl aswell. || || [[http://gazpacho.sicem.biz/|Gazpacho]] || PyGtk ||GPL || || [[http://glade.gnome.org/|Glade]] || PyGtk ||GPL || || [[lwickjr/Modules/|GWiz]] || [[Tix]] ||GUI engine with integrated GUI builder. Need Alpha testers. || || [[http://www.codeplex.com/IronPythonStudio|IronPython Studio]] || Windows Application || A free GUI implementation of IronPython with the same interface as Visual Studio. || || [[http://www.activestate.com|Komodo]] || TkInter ||Commercial || || [[http://page.sourceforge.net/|PAGE]] || Tkinter, Tix ||GUI editor for Windows and Linux || || PyScripter || Windows || An OpenSource IDE developed using Python and Delphi || || PythonCard || PythonCard, WxPython ||Python License. Alpha. || || PythonWorks || TkInter ||PythonWorks is no longer being developed. They still support their existing customers, but licenses are no longer available to new customers. || || [[http://www.trolltech.com/products/qt/features/designer|Qt Designer]] || PyQt ||A form design tool, available with both Commercial and GPL editions of Qt. Can be used with Eric3 and Eric4. || || WxDesigner || WxPython ||Commercial Student EUR 29, Single user EUR 129 || || [[http://wxformbuilder.org/|WxFormBuilder]] || WxPython || GPL cross-platform WYSIWYG GUI builder. Can produce XRC/XML, wxWidgets/C++, or wxPython/python. || || WxGlade || WxPython ||MIT License, Alpha. || || [[http://sourceforge.net/projects/xrope/|xrope]] || Python Tkinter || GUI, class browser, file manager, with code completion. Licensed under the GPL. || || [[http://pythontr.org/|Visual Python IDE]] || Tkinter ||Visual Python IDE for Python 2.6 to TKINTER || || [[http://visualpython.org/|Visual Python]] || Tkinter ||Visual Python || |
Line 17: | Line 95: |
WingIde (http://www.wingide.com) | == Opinions == |
Line 19: | Line 97: |
TkinterIdle | While Python may support a larger number of GUI toolkits than any other language (family), the selection doesn't always appear to satisfy every Python programmer; [[http://www.straw-dogs.co.uk/|Straw Dogs]], for example, may be representative of several others when he [[http://www.straw-dogs.co.uk/09/03/python-gui-programming-painful/|writes]], "if you want to create a GUI desktop app - don't use Python". Still, for many people, Python GUI work is more or less a treat, especially if the more popular, mature frameworks are adopted. |
Line 21: | Line 100: |
BoaConstructor | == Links == |
Line 23: | Line 102: |
BlackAdder | CameronLaird's personal notes on Python GUIs http://phaseit.net/claird/comp.lang.python/python_GUI.html includes over 25 links to toolkits and techniques for connecting python with a GUI. |
Line 25: | Line 104: |
PythonWorks (http://www.pythonworks.com) | Other places to look are Thinki:PythonGuis at Thinki, and http://sensei.co.il/python/ui.html . |
Line 27: | Line 106: |
PythonCard | Opendocs previously had some material on Qt programming with Python for on-line reading, but ownership of the domain appears to have lapsed. An online version of Boudewijn Rempt's book about PyQt for Qt 3, [[http://www.commandprompt.com/community/pyqt/|GUI Programming with Python: QT Edition]], is still available. An up-to-date book covering PyQt4, [[http://www.qtrac.eu/pyqtbook.html|Rapid GUI Programming with Python and Qt]] by Mark Summerfield, is now available in print and as an online "rough cut". More details can be found on the [[http://www.diotavelli.net/PyQtWiki/Books|PyQt Wiki]]. |
Line 29: | Line 108: |
WxDesigner | http://www.awaretek.com/toolkits.html - Choose Your GUI Toolkit: Find Your GUI Toolkit for Python based on your preferences. Quick cgi application which helps you make a choice. See also [[http://awaretek.com/plf.html|Python City]]. http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python - Wikipedia article describing several IDE's and GUI Builders. == Editorial Notes == The above lists should be arranged in ascending alphabetical order - please respect this when adding new frameworks or tools. Currently, this section is rather incomplete. Don't be too disappointed if you can't find the information you need, but please add any information you can contribute. It might be useful to have information about the GUIs and development tools in a fixed format to make them more easily comparable (see WebProgrammingTemplate and WebProgrammingTemplateHelp). Some categories: directly supported widgets, add-on widgets, layout managers, etc. Maybe it could answer the questions in ChoosingGuiToolkits for each toolkit. ---- CategoryDistutilsCookbook |
GUI Programming in Python
Python has a huge number of GUI frameworks (or toolkits) available for it, from Tkinter (traditionally bundled with Python, using Tk) to a number of other cross-platform solutions, as well as bindings to platform-specific (also known as "native") technologies.
GUI Programming in Python is a similar page whose content could arguably complement this page with some editing.
Cross-Browser Frameworks
Package
Target
Notes
All major Web Browsers
Comprehensive Widget toolkit, Python-to-Javascript compiler and AJAX library. Provides the "V" in MVC. See also PyjamasDesktop
Cross-Platform Frameworks
The major cross-platform technologies upon which Python frameworks are based include Gtk, Qt, Tk and wxWidgets, although many other technologies provide actively maintained Python bindings.
Package
Target
Notes
many
("Anygui is no longer being actively developed or supported.") single source code runs on many GUI back-ends, including many in this table, plus ncurses
Linux / many
Fully automatic, live connection among graphical interface widgets and application variables.
Dabo is a 3-tier, cross-platform application development framework, written in Python atop the wxPython GUI toolkit
Tk
EasyGUI is a module for very simple, very easy GUI programming in Python.
FXPy
FOX
Last released 2002; presumed dead.
Gnome
Gnome Platform bindings: bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomevfs, gnomeui
Gnome
Gnome Desktop bindings: metacity, nautilus, gnomeprint, gtksourceview, gtop, media-profiles, totem, wnck
Gnome
Additional Gnome bindings: libegg, gda, gtkmozembed, gtkspell, gksu, gdl, gtkhtml2
GUI engine with integrated GUI builder. Need Alpha testers.
.NET/Mono
Python for (originally MS') .NET platform. See http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython for more info.
Java
Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. see http://www.jython.org/Project/index.html for more info.
libavg
Windows, MacOS, Linux
Not strictly a GUI toolkit, but a high-level multimedia framework that allows construction of media-rich guis. http://www.libavg.de.
Lucid
Windows, GTK, MacOS
An abstraction layer and clever layout engine that uses the native GUI widgets of each operating system. Previously known as "Claro Framework" - visit http://www.lucidtoolkit.org/
Nufox
XUL (many)
Nufox is a python, XUL toolkit written ontop of the Twisted Networking Framework and Nevow. The idea is that you should be able to write server-side cross platform XUL applications without writing XUL markup, with little javascript, all from the comfort of python, http://nufox.berlios.de/
many
GUI library. Python only "pythonic javax.swing". Model/View/Controller, skinning. See http://ocean.sourceforge.net/
Pygame
A small GUI toolkit written in Python based on Pygame. Provides accessibility support.
supports Windows/Unix/Mac - visit http://pyfltk.sourceforge.net
Gtk
Bindings for pango, atk, gtk and libglade
Gtk
Python 2.x and 3.x series, Bindings for gtk (gobject, glib) based on ctypes
Tkinter
PyGtk to Tkinter Wrapper runs PyGtk based code unchanged using Tkinter (Tk).
MacOS / Gtk
Abstract, pythonic API encapsulating different platforms; At the moment runs on MacOS X/Carbon & Unix/Gtk
Many
Comprehensive Widget toolkit that uses PyWebkitGtk to do the heavy lifting. Provides the "V" in MVC. See also Pyjamas
Qt / KDE
Python wrappers for the KDE libraries
OpenGL, all platform
Python framework for doing multitouch GUI / Application
PyPicoGUI
python library is included in the main PicoGUI release
Qt
Python bindings for the Qt application development framework
Qt
The PySide project provides LGPL-licensed Python bindings for the Qt cross-platform application and UI framework.
PySWT
SWT
PySWT is a Python Binding to the IBM Eclipse SWT library, to provide Python with a cross platform native looking GUI, see http://www.cs.nyu.edu/zilin/pyswt/pmwiki.php?n=PySWT.Introduction
Both a framework and GUI builder. Can include wxPython code in PythonCard apps PythonCard tutorial videos at ShowMeDo
Web Browsers
PyWebkitGtk is a Python Binding to webkit, including DOM model manipulation, Javascript execution, plugin support (e.g. Flash) and (on the TODO list) SVG Canvas support, for extremely powerful and comprehensive applications development. See PyjamasDesktop for an easy-to-use API.
OpenGL
Specialized GUI Toolkit for generating GUIs for OpenGL programs.
OLPC XO with Linux
User interface for collaborative educational software
Tk
Python's "standard" GUI library
Tk extension
TkZinc is a extension of the Tk Canvas, with transparency, gradient, transformations
VTK
many
The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization. See http://public.kitware.com/VTK/index.php for more info.
A wrapper to WxPython, easier and more "pythonic"
supports Windows/Unix/Mac for now - visit http://www.wxwidgets.org, wxPython tutorial videos at ShowMeDo on writing a graphical application
XGui
XGui
XGui is a cross-platform widget set with C,C++ and Python bindings. Actually supports *nix over Gtk and Windows over Win32 - see http://www.objectblues.net/wiki/show/XGui for more info.
Platform-specific Frameworks
Package
Target
Notes
BeOS
MacOS
Supports both OSX and OS9
MacOSX
Supports Cocoa Aqua GUIs on the Mac
MorphOS
MagicUserInterface wrapper for Python. Support for MorphOS 2.x.
Windows
A free GUI implementation of IronPython with the same interface as Visual Studio.
Windows
Venster is a highly native Windows GUI toolkit for Python based on the ctypes ffi library. The aim of Venster is to be a very lightweight wrapper around the standard Win32 API, making it easy to write slick windows applications in pure Python.
Windows
Also known by the names of its components: PythonWin (for the UI), Win32Com (for COM/ActiveX), Win32 (for some other parts of the API)
Anyone for a GuiProgrammingShootout?
GUI Design Tools and IDEs
IDE
Target
Notes
Automagically creates GUI applications from Glade GUI definition, GPL
Commercial, $50-400
GPL, Alpha, looks rather dead
GPL
Freeware. Open-Source. Support wxRuby & wxPerl aswell.
GPL
GPL
GUI engine with integrated GUI builder. Need Alpha testers.
Windows Application
A free GUI implementation of IronPython with the same interface as Visual Studio.
Commercial
Tkinter, Tix
GUI editor for Windows and Linux
Windows
An OpenSource IDE developed using Python and Delphi
Python License. Alpha.
PythonWorks is no longer being developed. They still support their existing customers, but licenses are no longer available to new customers.
A form design tool, available with both Commercial and GPL editions of Qt. Can be used with Eric3 and Eric4.
Commercial Student EUR 29, Single user EUR 129
GPL cross-platform WYSIWYG GUI builder. Can produce XRC/XML, wxWidgets/C++, or wxPython/python.
MIT License, Alpha.
Python Tkinter
GUI, class browser, file manager, with code completion. Licensed under the GPL.
Tkinter
Visual Python IDE for Python 2.6 to TKINTER
Tkinter
Visual Python
Opinions
While Python may support a larger number of GUI toolkits than any other language (family), the selection doesn't always appear to satisfy every Python programmer; Straw Dogs, for example, may be representative of several others when he writes, "if you want to create a GUI desktop app - don't use Python". Still, for many people, Python GUI work is more or less a treat, especially if the more popular, mature frameworks are adopted.
Links
CameronLaird's personal notes on Python GUIs http://phaseit.net/claird/comp.lang.python/python_GUI.html includes over 25 links to toolkits and techniques for connecting python with a GUI.
Other places to look are PythonGuis at Thinki, and http://sensei.co.il/python/ui.html .
Opendocs previously had some material on Qt programming with Python for on-line reading, but ownership of the domain appears to have lapsed. An online version of Boudewijn Rempt's book about PyQt for Qt 3, GUI Programming with Python: QT Edition, is still available. An up-to-date book covering PyQt4, Rapid GUI Programming with Python and Qt by Mark Summerfield, is now available in print and as an online "rough cut". More details can be found on the PyQt Wiki.
http://www.awaretek.com/toolkits.html - Choose Your GUI Toolkit: Find Your GUI Toolkit for Python based on your preferences. Quick cgi application which helps you make a choice. See also Python City.
http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python - Wikipedia article describing several IDE's and GUI Builders.
Editorial Notes
The above lists should be arranged in ascending alphabetical order - please respect this when adding new frameworks or tools.
Currently, this section is rather incomplete. Don't be too disappointed if you can't find the information you need, but please add any information you can contribute. It might be useful to have information about the GUIs and development tools in a fixed format to make them more easily comparable (see WebProgrammingTemplate and WebProgrammingTemplateHelp). Some categories: directly supported widgets, add-on widgets, layout managers, etc. Maybe it could answer the questions in ChoosingGuiToolkits for each toolkit.