Grahic User Interface (GUI)
Tools
The command line is for simple text output: see the CLI
menu. An Interactive Development Environment provides an adequate tools
for development and debugging: see the IDE
menu. However, there are occasions when a GIU affords better operation
of a data sonification and these tools are for those.
Event
driven GUI vs Interpreter+CLI
One of SoniPy's requirements is that one must be able to access the
python interpreter and all that that entails (developing other modules,
data/project specific tools etc) at the same time as accessing GUIs for
more mundane or oft-undertaken tasks. This is essential for incremental
development: to lock everything off behind an event-driven GUI (as a
single program) will inhibit communal development.
Look and Feel: consistency
across
platforms or platform consistency
There are two approaches to developing cross-platform GUI tools. One is
to try to make the look-and-feel the same independent of the platform,
and the other is to use tools which defer to hardware-specific
routines. The main tools for the former are TCL/TK and OpenGL, and the
latter includes FLTK, GTK+ and wxPython. After testing, we decided to
follow the second approach, mainly because the visual results were
cleaner, more stable and faster.
Please note that
these tools are for interface development. If you want to gnerate
graphical output such as charts, plots and animations, see the IMAGE
DISPLAY menu.
Name |
|
wxPython |
Description |
|
A
blending of the wxWidgets C++ class library with the Python programming
language. |
Principal
Reference |
|
http://www.wxpython.org/ |
Documentation |
|
The
above URL is very comprehensive. Rappin and Robin Dunn's book wxPython
in Action is very readable and
offers guidelines about GUI development in an event-driven environment. |
Version |
|
For
Mac OSX 10.4: Version 2.8.3.0
Later versions should not present incompatibilities. |
Download |
|
sourceforge
OSX 10.4 binary download
wxPython
binary download |
Dependencies |
|
wxPython
needs a special Mac OS X-specific build of Python. See MacOSX heading
on the prerequisites page. |
Examples |
|
wxPython is
used extensively. PythonCard (see below) has quite a few demonstrations. |
Warnings |
|
There
are a few application development environments which bundle wxPython
and other python tools. Examples are Jython
Boa-Constructor, SPE and PyGame. We don't
recommend this approach.
Making the
look-and-feel of a GUI satisfactory can be very time-consuming.
|
Initial
Comments |
|
wxPython
is a cross-platform toolkit. This means that the same program will run
on multiple platforms without modification. Currently supported
platforms are 32-bit Microsoft Windows, most Unix or unix-like systems,
and Macintosh OS X.
PyCrust
is an interactive Python shell written in Python using wxPython. It was
a separate application but is now part of wxPython.
|
Design
tools using wxPython
One of the most
difficult things about GUI systems is the sheer volume of interrelated
heirarchical information that needs to be absorbed before one can do
anything. wxPython abstracts some of the lower-level issues to good
effect. wxGlade and PythonCard take this one step further, taking much
of the pain out of the GUI design process.
Name |
|
wxGlade |
Description |
|
A
GUI designer written in Python that helps you create wxWidgets/wxPython
user interfaces. At the moment it can generate Python, C++ and XRC
(wxWidgets' XML resources) code. |
Principal
Reference |
|
the
sourceforge site |
Documentation |
|
the
manual on sourceforge |
Version |
|
Is
platform independent. Get the latest (perhaps but one). |
Download |
|
(CVS
best at this stage) |
Dependencies |
|
wxPython |
Examples |
|
tutorial |
Warnings |
|
The
development group is quite new, but seems stable and open to beginner's
questions. |
Initial
Comments |
|
wxGlade
allows you to develop a GUI iteratively, including generating the
Python code. A feature of wxGlade is that it separates the GUI code
from the task handling, so you can reload your developing code into
wxGlade and adjust the GUI without interferring with the task handlers.
|
Name |
|
PythonCard |
Description |
|
PythonCard
is a GUI construction kit using wxPython for building cross-platform
desktop applications on Windows, Mac OS X, and Linux. Apple's HyperCard
is one of their inspirations; simple, yet powerful. |
Principal
Reference |
|
sourceforge
site |
Documentation |
|
sourceforge site documentation.
Contains a lot of useful material. |
Version |
|
Is
platform independent. Get the latest (0.8.2 at time of writing). |
Download |
|
the
sourceforge site |
Dependencies |
|
wxPython |
Examples |
|
PythonCard
provides some real examples which can just be loaded and run. Most of
them are pretty basic but offer a good learn-by-fiddling-around
approach. The PythonCard website has a link to screenshots of some of
these simple applications built using it. |
Warnings |
|
None.
Hasn't been tested as thoroughly as wxGlade. |
Initial
Comments |
|
A
good learning tool. The basic approach seems to encourage a "find and
example close to what you're needing and adapt it to your specific
needs." Whilst initially attractive, this can lead to problems
integrating with other tasks. I found it useful to do an initial mock
up in PythonCard and transfer the results to wxGlade. |
|