[Python-3000] back with more GUI planning in a few days...
Talin
talin at acm.org
Tue May 9 09:32:58 CEST 2006
Josiah Carlson <jcarlson <at> uci.edu> writes:
> Greg Ewing <greg.ewing <at> canterbury.ac.nz> wrote:
> > In the interests of keeping it small (both in terms of API
> > and code size) I don't consider it vital to provide a huge
> > number of widgets. I'd rather have a compact library with
> > 10 well-chosen generally-useful widgets that I can build on,
> > than a bloated one with 500 highly specialised widgets.
> > (Okay, so 500 is an exaggeration, but someone mentioned
> > 100 widgets. I flatly disbelieve that anyone *needs* 100
> > widgets for even the most demanding application.)
>
> You may very well be referring to me. I mentioned that people who were
> considering PyGUI as the 'de-facto' standard for Python GUI libraries
> take a wander through the wxPython demo to see what a generally
> fully-featured library offers.
>
> I also mentioned that while I didn't think that a standard library
> module would necessarily need to include all of those widgets (or their
> equivalent), "there are literally dozens of widgets that people would be
> disappointed if they couldn't have."
Its not just numbers of widgets, its also widget capabilities.
The actual number of widgets needed for a basic GUI toolkit isn't
all that large. Off the top of my head, I'd say that there's a palette
of about 20 basic widgets, 5 standard dialogs, and 4-5 layout
algorithms that need to be supported.
But those basic widgets will each have on the order of 10-20
parameters. For example, a button widget would have:
-- enabled flag
-- focus flag (for platforms that support keyboard focus)
-- style
-- activation type (toggle vs. hold-down, etc.)
-- tooltip
-- caption
-- area
-- accelerator key (i.e. keyboard equivalent)
-- icon
and possibly:
-- foreground color
-- background color
-- font
-- text horizontal alignment
-- text vertical alignment
-- tab order
If we compare this list vs. the current supported PyGUI attributes,
we see that it has a ways to go, but not, IMHO, an insurmountable
distance.
A far as widgets go, I think I'd be satisfied (mostly) with the following
(this is just off the top of my head, and not a definitive list):
Window
Dialog
Button / Checkbox / Radio
Scrollbar
Slider
Listview
Combo box / drop-down
Scrollview
Group box
Tree View (extra credit: support drag and drop.)
Spinner (i.e. increment/decrement control)
Grid View
Text Edit / Multiline Edit / Styled Edit
Static Text
Static styled text
Static Image
Toolbar (Dockable if supported by the platform)
Menubar / Menu / Menu item
Status bar
Tab panel
Standard system dialogs:
Open File
Save File
Select Directory
Color Chooser
Font Chooser
Standard application dialogs:
Caption + Single button (notify)
Caption + Two buttons
Caption + Text Entry + Two buttons
Standard cursors:
Arrow
Hourglass / Wait
Sizing cursors: left/right, up/down, NE/SW, NW/SE
I-beam cursor
Hand / Drag cursor
Standard Alerts:
Notice
Warning
Error
-- Talin
More information about the Python-3000
mailing list