Ich hab mir dazu mal ein paar gedanken gemacht... Um das natürlich "Look and Feel" der Betriebssysteme zu erreichen sollte man unter Windows die WinAPI und unter Unix GTK+ benutzen...
Also man sollte die Widgets in C schreiben, da man dann direkt auf die WinAPI und auf GTK+ zugreifen kann. Die Layouter wie, z.B. Table können dann in Python geschrieben werden.
Ich denke, dass das vorallem eine Fleißarbeit ist... Allerdings sollte man das schon vorher ein bisschen genauer planen, damit man sich die Arbeit nicht zweimal macht. Hier ist also mal so ein grobe Skizze:
Code: Alles auswählen
Klassen Hirarchie
Widget
|-Button
|-RadioButton
|-CheckButton
|-Edit
|-MultilineEdit
|-Label
|-ProgressBar
|-List
|-TreeView
|-Toolbar
|-Menu
|-PopupMenu
|-Image
|-DrawingArea
|-(OpenGLView)
|
|-Container
|-Window
|-Table
|-VBox
|-HBox
Widget Funktionen:
get_size_request()
Gibt die Größe zurück, die das Widget gerne hätte
set_position( left, top, width, height )
Setzt die Größe des Widgets
set_visible( visible )
get_visible( visible )
Sichtbar, oder nicht...
Container Funktionen:
Unterschiedliche Funktionen zum hinzufügen von Widgets
und Containern
z.B. add()
layout()
Ordnet alle Kindelemente an
Fragt erst von allen Kinder mit der Funktion
get_size_request() ab, wie viel Platz sie benötigen.
Wenn kein Aufruf von set_position, erfolgt war,
ändert es seine Größe so, dass alle Kinder genug
Platz haben. Dann Teilt es mit der Funktion
set_position den Kinden mit, wie viel Platz sie
haben und ruft in allen Kinden die Funktion Layout
auf, wenn es sich um einen Container handelt.

Ich bin mir zwar noch nicht sicher, ob ich das durchziehen kann, aber vielleicht wird es ja doch etwas...