Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1 | .. _other-gui-packages: |
| 2 | |
| 3 | Other Graphical User Interface Packages |
| 4 | ======================================= |
| 5 | |
Georg Brandl | ac6060c | 2008-05-17 18:44:45 +0000 | [diff] [blame] | 6 | There are an number of extension widget sets to :mod:`tkinter`. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 7 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 8 | .. seealso:: |
| 9 | |
| 10 | `Python megawidgets <http://pmw.sourceforge.net/>`_ |
| 11 | is a toolkit for building high-level compound widgets in Python using the |
Georg Brandl | ac6060c | 2008-05-17 18:44:45 +0000 | [diff] [blame] | 12 | :mod:`tkinter` package. It consists of a set of base classes and a library of |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 13 | flexible and extensible megawidgets built on this foundation. These megawidgets |
| 14 | include notebooks, comboboxes, selection widgets, paned widgets, scrolled |
| 15 | widgets, dialog windows, etc. Also, with the Pmw.Blt interface to BLT, the |
| 16 | busy, graph, stripchart, tabset and vector commands are be available. |
| 17 | |
| 18 | The initial ideas for Pmw were taken from the Tk ``itcl`` extensions ``[incr |
| 19 | Tk]`` by Michael McLennan and ``[incr Widgets]`` by Mark Ulferts. Several of the |
| 20 | megawidgets are direct translations from the itcl to Python. It offers most of |
| 21 | the range of widgets that ``[incr Widgets]`` does, and is almost as complete as |
| 22 | Tix, lacking however Tix's fast :class:`HList` widget for drawing trees. |
| 23 | |
| 24 | `Tkinter3000 Widget Construction Kit (WCK) <http://tkinter.effbot.org/>`_ |
| 25 | is a library that allows you to write new Tkinter widgets in pure Python. The |
| 26 | WCK framework gives you full control over widget creation, configuration, screen |
| 27 | appearance, and event handling. WCK widgets can be very fast and light-weight, |
| 28 | since they can operate directly on Python data structures, without having to |
| 29 | transfer data through the Tk/Tcl layer. |
| 30 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 31 | |
| 32 | The major cross-platform (Windows, Mac OS X, Unix-like) GUI toolkits that are |
| 33 | also available for Python: |
| 34 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 35 | .. seealso:: |
| 36 | |
| 37 | `PyGTK <http://www.pygtk.org/>`_ |
| 38 | is a set of bindings for the `GTK <http://www.gtk.org/>`_ widget set. It |
Christian Heimes | dd15f6c | 2008-03-16 00:07:10 +0000 | [diff] [blame] | 39 | provides an object oriented interface that is slightly higher level than |
| 40 | the C one. It comes with many more widgets than Tkinter provides, and has |
| 41 | good Python-specific reference documentation. There are also bindings to |
| 42 | `GNOME <http://www.gnome.org>`_. One well known PyGTK application is |
| 43 | `PythonCAD <http://www.pythoncad.org/>`_. An online `tutorial |
| 44 | <http://www.pygtk.org/pygtk2tutorial/index.html>`_ is available. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 45 | |
Georg Brandl | 628e6f9 | 2009-10-27 20:24:45 +0000 | [diff] [blame] | 46 | `PyQt <http://www.riverbankcomputing.co.uk/software/pyqt/>`_ |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 47 | PyQt is a :program:`sip`\ -wrapped binding to the Qt toolkit. Qt is an |
| 48 | extensive C++ GUI application development framework that is |
| 49 | available for Unix, Windows and Mac OS X. :program:`sip` is a tool |
| 50 | for generating bindings for C++ libraries as Python classes, and |
| 51 | is specifically designed for Python. The *PyQt3* bindings have a |
| 52 | book, `GUI Programming with Python: QT Edition |
| 53 | <http://www.commandprompt.com/community/pyqt/>`_ by Boudewijn |
| 54 | Rempt. The *PyQt4* bindings also have a book, `Rapid GUI Programming |
| 55 | with Python and Qt <http://www.qtrac.eu/pyqtbook.html>`_, by Mark |
| 56 | Summerfield. |
| 57 | |
| 58 | `wxPython <http://www.wxpython.org>`_ |
| 59 | wxPython is a cross-platform GUI toolkit for Python that is built around |
| 60 | the popular `wxWidgets <http://www.wxwidgets.org/>`_ (formerly wxWindows) |
Christian Heimes | 2c18161 | 2007-12-17 20:04:13 +0000 | [diff] [blame] | 61 | C++ toolkit. It provides a native look and feel for applications on |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 62 | Windows, Mac OS X, and Unix systems by using each platform's native |
Christian Heimes | 2c18161 | 2007-12-17 20:04:13 +0000 | [diff] [blame] | 63 | widgets where ever possible, (GTK+ on Unix-like systems). In addition to |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 64 | an extensive set of widgets, wxPython provides classes for online |
| 65 | documentation and context sensitive help, printing, HTML viewing, |
| 66 | low-level device context drawing, drag and drop, system clipboard access, |
| 67 | an XML-based resource format and more, including an ever growing library |
Christian Heimes | 2c18161 | 2007-12-17 20:04:13 +0000 | [diff] [blame] | 68 | of user-contributed modules. wxPython has a book, `wxPython in Action |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 69 | <http://www.amazon.com/exec/obidos/ASIN/1932394621>`_, by Noel Rappin and |
| 70 | Robin Dunn. |
| 71 | |
Alexandre Vassalotti | 8ae3e05 | 2008-05-16 00:41:41 +0000 | [diff] [blame] | 72 | PyGTK, PyQt, and wxPython, all have a modern look and feel and more |
Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 73 | widgets than Tkinter. In addition, there are many other GUI toolkits for |
Alexandre Vassalotti | 8ae3e05 | 2008-05-16 00:41:41 +0000 | [diff] [blame] | 74 | Python, both cross-platform, and platform-specific. See the `GUI Programming |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 75 | <http://wiki.python.org/moin/GuiProgramming>`_ page in the Python Wiki for a |
| 76 | much more complete list, and also for links to documents where the |
| 77 | different GUI toolkits are compared. |
| 78 | |