Tkinter: The good, the bad, and the ugly!

Arndt Roger Schneider arndt.roger at addcom.de
Tue Jan 18 08:09:10 EST 2011


Terry Reedy schrieb:
> On 1/16/2011 11:20 PM, rantingrick wrote:
> 
>> Ok, try this...
>>
>>      http://juicereceiver.sourceforge.net/screenshots/index.php
>>      http://www.sensi.org/~ak/pyslsk/pyslsk6.png
>>      http://www.wxwidgets.org/about/screensh.htm
> 
> 
> Ok, wxwidgets can look at least as good as tk. Agreed that wxpython 
> might instead link to the excellent wxwidgets page.
> 

Well, tosssing screenshots around doesn't prove wether
a framwork/toolkit is good or not;
It only displays the developers commitment to create
a work of art.

Lets examine one of your examples:
http://juicereceiver.sourceforge.net/screenshots/index.php#mac

Overall impression:
The software was designed for windows; more or less
following the windows hci-guidelines,
The windows version is resonable good.

About the Aqua screenshots:

  1. Negative actions are located on the falling diagonale.
2-3. The select background and foreground inside the multi-column 
listbox have the wrong color--the used color originates from text fields.
  4. The multi-column listbox should have vertical gridlines.
5-6. Too much top and bottom padding inside the column header.
  7. The column texture is wrong --there is a visible line in the bottom.
  8. There are white boxess around the input fields.
  9. Header column label and lisstbox content are not aligned.
10. There is separator line between the status bar and the
     brusshed dialog.
11. Last picture: there is a single page inside the tabet
     control.
12. Last picture: The text "Select radio ..." is trucated,
     the dialog isn't large enough.
13. The Scheduler activation should come before
     customizing the scheduler.
14. The dialog uses sunken group boxes for some sections,
     these group should be 2% darker than their surrounding
     container.
15. The spacing rules from the aqua hci guidlines are
     violated. The inner tabset should have 20px distance from
     both sides, 20px from the bottom, 14px from top.
16. Second last picture: The button lables are truncated.
17. Tree: Uses the wrong folder symbols--from windows--,
     select background and foreground are wrong, too.

- The Aqua hci-guidlines discourage group boxes,
   the same with the windows guidlines, too. Get rid
   off group boxes.

- second last picture: There should be more top
   padding for the checkbutton inside the white rectangle;
   best the same as left-padding.

- There no focus frames visilbe inside these screenshots,
   it would be interessting to see how those are realised.

- The icon buttons should be brushed, likewise shoud the
   column header have brushed background.

- Aqua hci guidelines: All dialogs should
   have a centered appearance.

Back to rantingrick 21st century toolkit/framwork:
Let's have a look at the numbers:
Worlwide pc market are 300 Million pcs per year,
this number includes desktops(2/3) and servers(1/3).
Your gui app is not relevant on servers.
Quite a good deal of the remaining pc's are sold in
countries with rampant ilict software copies;
Since there are no software cost for these copies
the people tend to install the big, bloated software
pieces from named computer companies
--you wont sell linux there, because it is more
   expensive than an ilict windows+office++.

~ 100 Million potential new desktop users for you.

Apple's projection for the ipad in 2011 are 65 Million pieces,
iphone and ipod touch will be roughly the same.
130 Million ios pieces.


~ 130 Million new ios users for you.


The android market is still unclear, but I do suppose
it will rival ios, lets say 100 Million in 2011.

~ 100 Million new android users for you.


Microsoft mobile and blueberry are wildcards;
no serious forecast is possible for these devices.
Lets assume:

~ 50 Million blueberry, windows mobile.

Total is: 380 Million potential new user for your application.


wxWidgets: 36000000 LOC, python: 1400000 LOC
--these are very old numbers, but from the same time period.

wxWidgets on desktop, present for windows, Aqua and X11.
wxWidgets on ios, possible but unlikely, the thing is way to big
for any ios device.
wxWidgets on android not realistic.
wxWidgets on blueberry not possible.
wxWidgets on windows mobile; development is
silverlight with .net, so wxWidgets would have to be
ported to .net; not realistic.

python on desktop, present.
python on ios, possible --if not yet present.
python on android, present.
python on blueberry, possible.
python on windows mobile, present--but .net support deprecated by ms.

The smartphone and table market has only started, yet.
In 2011 the mobile market is already larger than the desktop pc,
almost 3 times largerv.

The desktop pc market is in decline; there is
however a shift toward pc-servers, instead.
It is anybodies guess how far the pc-desktop decline will go.
Every 21st century toolkit or framework must run on
mobile platforms!

wxWidgets was written ~1992, it is a copy of
mfc, which in turn is a copy of MacApp. MacApp
is also OSS, maintained through an industrie consortium.
Why do you not use the original framework?

Looking into wxWidgets:
The treeview: Trees do not work well with touchscreens.
Mutli-column-listbox: Doesn't work at all with touchscreens,
   instead use simple lists with multi-line entries.

Interactivity: keyboard focus, shortcuts, function keys,
   active foreground, active background are obsolete.
   hovering tooltips obsolete, status bar to large, obsolete.
   scrolled dialogs, obsolete. OK, Cancel, Retry, Abort
   buttons, obsolete, file dialogs obsolete, old style printing
   obsolete, drag-and-drop obsolete...

Screen resolution:
   The time of 72ppi CRT monitors is over. A GUI
   framework/toolkit must be resolution independent,
   including all icons and indicators;
   it should use decluttering (newspeak:ZUI).

Summary wxWidgets:
wxWidgets is large scale C++ library from the 20th century,
solemnly dedicated toward desktop computers.
wxWidgets originates from a time before templates
were used in C++ and thus duplicates many of
today's C++ features.
wxWidgets is not suitable for a modern type
GUI ad thus clearly not the toolkit/framework
of the 21st century.

-roger





More information about the Python-list mailing list