Cameron Laird's personal notes on Python
GUIs
Table of Contents
The van Rossums maintain a
page
of contributed graphical python software, including brief
commentary. My remarks here only supplement their work, and do not
replace it. If you know of information that should be here, and is
missing, please let me know; I'll quickly add it. [Finish adding few
dozen other links.] [especially explain uiToolkit.]
Mikael Lyngvig accurately
summarizes
comp.lang.python discussion of the
technical merits of
Tkinter,
wxPython, and Python-bound
JPI.
"Fltk
("Fast Light Tool Kit") is a fairly new portable GUI toolkit library
for UNIX/X11 and Win32, with OpenGL support, largely compatible
with the XForms library, ..." and distributed under GNU Library GPL.
This is Markus Fleck's
characterization,
in which he adds that, "While written in C++, Fltk does not use macros,
templates, multiple inheritance, or exceptions, and should thus be
quite easily SWIGable." XForms itself apparently
has a non-commercial-use-only license.
Kevin Dalhausen and Bjorn Petterson, among others, are working on
bindings
for Python and Perl. They conduct their work through a
mailing list.
FOX is yet another GUI
that looks to be of interest to Pythonians.
FXPy
is a good Python extension,
with relatively complete documentation.
JPython gives convenient access to AWT and JFC.
JPI
allows Python--CPython, that is--to script Java. It's immature,
as of summer 1999.
[Explain Mark Hammond's expertise.]
PyGTK
binds to the
GTK+ toolkit and
GNOME libraries.
While it originally aimed only to be the toolkit for
the GIMP, Gtk is now popular for many, many open-source
projects.
Prominent in the minds of many working with Qt and GTK
are the different licenses under which they operate.
I choose not to describe those controversies; I do
recommend, though, that users study them enough to
understand their consequences. (Is it not thread-safe?)
In mid-1999, Gtk has more widgets than Tk, and generally
feels more responsive. Tk generally remains more succinct.
pyKDE
is now at 0.9pre2. Phil Thompson currently packages it
in two pieces, one for KDE,
and one for Qt. My thanks to Boudewijn Rempt
for updating me on its status, and referring me to the
tutorial
he wrote.
PyKDE advocates
generally claim it's zippy, easy, and powerful. On the other hand,
pyKDE is (much?) less portable than Qt itself. As Mr. Rempt has
written me, "the problem
is that nobody has ever wanted to spend money on the Qt toolkit
for Windows to try it out!"
PythonQt
purports to bind to Qt.
I haven't used it. Apparently there's been no work on it in quite
a while; it's moribund, at best.
However, pyKDE-0.6 includes bindings for 1.1 of KDE and
1.42 of Qt, with the promise that, "[i]n a future version separate
bindings for each of these will be produced." [Fill in more
hyperlinks.]
[Explain]
As David Gobbi explains it,
VTK
is impressive:
Unfortunately,
VTK's python wrappers aren't available under Windows
(or at least, aren't complete yet). Under UNIX,
though, there are tons of impressive VTK examples
that use python. We use VTK under linux, IRIX,
and NT (the last two with hardware OpenGL acceleration).
Since then, as he told me in a private communication,
VTK/python interface was ported to Windows ...
and integrated into the main VTK codebase [early in 1999]. The
most recent VTK release (2.4) for Windows comes with the python
interface pre-built.
I'm working with the
VTK folks to make the
python interface rock-solid for VTK3.0, which should be released
sometime in the fall [of 1999].
This includes Tkinter widgets for 2D and 3D
rendering, plus the ability to pass data (images, vertex arrays, etc)
between VTK and python.
Among VTK's attractions: the Prentice-Hall manual,
and good bindings also for C++, Java, and Tcl/Tk.
wxPython,
based on
wxWindows
2.0, is now sufficiently mature to inspire
wild enthusiasm
in at least some users. Moreover, as Vadim Zeitlin
writes, "unlike probably any other GUI toolkit, wxWindows developers are
interested in making their toolkit useful to the Python community."
The wxWindows development team certainly seems active, with progress
in 1999 on many fronts (including MacOS, multimedia classes, GL, ...).
Still, Robin Dunn's conclusion is that, "I also don't think that
wxPython is ready yet to be included with the Python
distribution."
My thanks to Fredrik Lundh for his help understanding Python's GUIs.
We wrote at more length on related subjects in an
article for
SunWorld Online.
Cameron
Laird's personal notes on Python
GUIs/claird@NeoSoft.com