[Tkinter-discuss] PataPata as a Tkinter-based GUI designer
Paul D. Fernhout
pdfernhout at kurtz-fernhout.com
Thu Jul 6 16:12:02 CEST 2006
Version 0.2.02 of PataPata has just been released on SourceForge.
PataPata is an experiment about making a live Python object environment of
Prototypes and Morphs. It is intended mainly to support building
educational simulations and other microworlds for informal
"constructivist" education and "unschooling". It has previously been
discussed on the edusig list, but perhaps some people here might also find
it of interest for the Tkinter-related aspects.
The primary GUI interface is currently written in TK/Tkinter, and supports
interactively building TK-related projects (though only ones under the GPL
for now). My focus on Tkinter at this point is mainly for easy
installability, although the value of the TK library has been growing on
me as I use it more.
Almost two years ago, Eric Brunel posted this comment on Tkinter GUI building:
and I think the PataPata approach might potentially address the issues he
raises there on the need for better Tkinter GUI designer which can support
a wide range of widgets for multiple TK-related libraries.
Basically, as part of a larger effort to bring some of the more dynamic
qualities of Self and Squeak to Python, PataPata brings "prototypes" with
"properties" (beyond the Python properties) to Python programming. This
makes it easier to wrap arbitrary GUI components, whether existing Tkinter
widgets, adding pure TCL/TK widgets (an example for that is included in
the latest 0.2.02 for a combobox and tablelist), or, theoretically (as I
haven't tried it yet), addign widgets from PMW, Tix, BWidgets, and so on.
Or, in theory, and not at the same time as using TK widgets, even widgets
from WX, GTK, or whatever could be wrapped. PataPata had an earlier and
simpler WX GUI which has not been kept up-to-date, but used the same
wrapping approach, providing some hopes for cross-platform GUIs. I know
there are many efforts related to that kind of support already (AnyGUI,
PyUI, etc.), of course, though I think they come at it from a different
perspective, and their widgets could also in theory be wrapped in PataPata
as well. Another included example wraps an "xturtle" widget (an advanced
version of a 2D turtle by Gregor Lingl as a sophisticated library using
There is still no way around doing some hand-coding wrapping work for each
widget, but PataPata provides at least a framework for doing that work and
for being able to get started with it easily to do some simple wrapping of
a widget, and then add more wrapping as more functionality is needed.
There is limited PythonCard compatibility as well, as I chose to use
PythonCard naming conventions for access to many features of the Tkinter
widgets. This limited compatibility may make it somewhat easier to port
some simple PythonCard applications to Tkinter, though it still takes a
bunch of work (one example of doing this for the PythonCard sample
"conversions" is included) and many PythonCard widgets are not yet
supported. But you can at least take a PythonCard resource file and
convert it to PataPata if all the widgets types used are supported, as a
start to then doing hand coding for the rest of the functionality (which
is a tribute to PythonCard's modular design).
Now there may well be other approaches to the issues Eric Brunel brought
up, so this isn't to say PataPata is intended primarily to solve these
issues, just that in addition to its main purpose of bringing to Python
the notion of Prototypes and Morphs (that Squeak and Self have to varying
degrees), PataPata also provides an approach to handling those other
issues, which may be of interest to Tkinter users.
Here is the project web site:
A homepage with links to more information (including screencasts by
I had to resolve a few tricky Tkinter-related issues in the process, and
the archives of this list were very useful, thanks. :-)
Anyway, PataPata is still very much an experiment and work in progress, so
this isn't intended to convince you to move all your Tkinter work in it,
just to mention it as something being played with at the moment. There
remain lots of things to do for it and lots of ways it can be improved
(and probably some bugs too, of course. :-)
More information about the Tkinter-discuss