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 _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com