...I've been meaning to get some documentation and tidier demos put together for this thing, but it still hasn't happened. But here's what I have:
There are a lot of comments in the source code, and the "demo" starts at line number 2730.
Prerequisites are Python 3.1 or later, or Python 2.6 or 2.7, and pygame.
To demo it, just unzip the files into a folder, and run DavesGUI.py
Then drag things around, click them, etc.
(DavesGUIdemo1.py also runs, but it's an older & weaker demo; I just included it so that you can see an example of the "import" statements.)
A design goal was to make it easily "drop in" to existing pygame games, using the existing games' existing event loops. GUI elements ("widgets") are subclassed from regular pygame sprites, and user actions generate regular pygame events.
A widget is a sprite that can receive pygame events via its notify() method. Unlike simpler sprites, some widgets can generate pygame events representing things like button or menu clicks, entered text, etc.
Also, widgets can contain WidgetGroups of other widgets (as .children).
I didn't really finish it, but I implemented simple and 3D buttons, checkboxes, vertical menus, single-line text-entry boxes, modal and non-modal message boxes, vertical and horizontal scroll bars, and forms. Forms can contain other widgets, including other forms, and they can be nested to arbitrary depth. Overlapping widgets are handled properly, as are dragging and resizing.
As a favor to me, if you try it out or use it for anything, please take notes: a log of your frustrations, and what the documentation SHOULD HAVE told you, and what the code SHOULD HAVE done. As you accumulate such notes, please send them to me periodically.
---------- End forwarded message ----------