#
16.6 Other Graphical User Interface Packages

There are an number of extension widget sets to `Tkinter`.

Python megawidgets
  is a toolkit for building high-level compound widgets in Python using the `Tkinter` module. It consists of a set of base classes and a library of flexible and extensible megawidgets built on this foundation. These megawidgets include notebooks, comboboxes, selection widgets, paned widgets, scrolled widgets, dialog windows, etc. Also, with the Pmw.Blt interface to BLT, the busy, graph, stripchart, tabset and vector commands are be available.

  The initial ideas for Pmw were taken from the Tk `itcl` extensions `[incr Tk]` by Michael McLennan and `[incr Widgets]` by Mark Ulferts. Several of the megawidgets are direct translations from the itcl to Python. It offers most of the range of widgets that `[incr Widgets]` does, and is almost as complete as Tix, lacking however Tix's fast `HList` widget for drawing trees.

Tkinter3000 Widget Construction Kit (WCK)
  is a library that allows you to write new Tkinter widgets in pure Python. The WCK framework gives you full control over widget creation, configuration, screen appearance, and event handling. WCK widgets can be very fast and light-weight, since they can operate directly on Python data structures, without having to transfer data through the Tk/Tcl layer.

Tk is not the only GUI for Python, but is however the most commonly used one.

wxWindows
  is a GUI toolkit that combines the most attractive attributes of Qt, Tk, Motif, and GTK+ in one powerful and efficient package. It is implemented in C++. wxWindows supports two flavors of Unix implementation: GTK+ and Motif, and under Windows, it has a standard Microsoft Foundation Classes (MFC) appearance, because it uses Win32 widgets. There is a Python class wrapper, independent of Tkinter.

  wxWindows is much richer in widgets than `Tkinter`, with its help system, sophisticated HTML and image viewers, and other specialized widgets, extensive documentation, and printing capabilities.

PyQt
  PyQt is a sip-wrapped binding to the Qt toolkit. Qt is an extensive C++ GUI toolkit that is available for Unix, Windows and Mac OS X. sip is a tool for generating bindings for C++ libraries as Python classes, and is specifically designed for Python. An online manual is available at http://www.opendocspublishing.com/pyqt/ (errata are located at http://www.valdyas.org/python/book.html).

PyKDE
  PyKDE is a sip-wrapped interface to the KDE desktop libraries. KDE is a desktop environment for Unix computers; the graphical components are based on Qt.

FXPy
  is a Python extension module which provides an interface to the FOX GUI. FOX is a C++ based Toolkit for developing Graphical User Interfaces easily and effectively. It offers a wide, and growing, collection of Controls, and provides state of the art facilities such as drag and drop, selection, as well as OpenGL widgets for 3D graphical manipulation. FOX also implements icons, images, and user-convenience features such as status line help, and tooltips.

  Even though FOX offers a large collection of controls already, FOX leverages C++ to allow programmers to easily build additional Controls and GUI elements, simply by taking existing controls, and creating a derived class which simply adds or redefines the desired behavior.

PyGTK
  is a set of bindings for the GTK widget set. It provides an object oriented interface that is slightly higher level than the C one. It automatically does all the type casting and reference counting that you would have to do normally with the C API. There are also bindings to GNOME, and a tutorial is available.