[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