[Python-de] Grafische Oberfläche

Stefan Behnel behnel_ml at gkec.informatik.tu-darmstadt.de
Sam Okt 29 13:13:14 CEST 2005



Gerold Penz schrieb:
> maillist at moevy.net schrieb:
>> ich beschäftige mich seit einigen Wochen schon mit Python.
>> Nun suche ich eine grafische Oberfläche. Welche ist denn sehr gut
>> Dokumentiert?
>> wxpython ist leider nur sehr mau dokumentiert.
> 
> Da stellst hier ein Glaubensfrage.

Stattgegeben.

Trotzdem, ich habe noch niemanden kennengelernt, der auf Qt umgestiegen ist
und danach dann wieder etwas anderes benutzt hat (zumindest nicht aus freien
Stücken).


> pyQT - scheint nicht schlecht zu sein, aber sobald du für dein Programm
> auch nur einen Cent bezahlt bekommen möchtest, will Trolltec Geld. Und
> das nicht wenig.

Ansichtssache. Eigentlich sind die Preise doch recht moderat. Und wer wirklich
nur einen Cent verdienen möchte, der sollte sich vielleicht überlegen, ob es
das dann überhaupt wert ist...


> TkInter - einfach und wird meist mit Python mitinstalliert. Leider sind
> die Möglichkeiten mit TkInter recht eingeschränkt. Einfache Oberflächen
> sind kein Problem, aber wenn es mehr sein sollte, würde ich es nicht
> nehmen.

Das ist klar der Vorteil: Überall installiert. Das war's dann aber auch schon.
Insbesondere fehlt die WYSIWYG Erstellung von Oberflächen. Bei allem, was von
der Komplexität her über ein "Hallo Welt!" hinaus geht, wird so etwas ziemlich
schnell unersetzlich. Oberflächen wachsen, nicht vergessen!


> pyGTK - in Ansätzen, einfach zu programmieren. Die Dokumentation ist
> spitze. Aber, es fehlen ein paar Dinge, wie z.B. ein Grid-Widget. Es
> wurde dem TreeView-Widget sehr viel Macht verliehen. Man kann damit fast
> alles machen wie z.B. eine Listenansicht, oder eine Baumansicht...
> Leider gibt deshalb aber auch kein *einfaches* Listen-Widgets oder ein
> *einfaches* TreeView-Widget. MDI-Fenster sind mit GTK nicht oder nur
> schwer zu erstellen. (GTK war bis jetzt mein Favorit.)

Ich habe PyGTK ausprobiert und bin (trotz 15 Jahren Programmiererfahrung, auch
in vielen GUI-Sprachen) an den TreeViews gescheitert. Die sind dermaßen
kompliziert, dass es für mich weniger Aufwand war, danach Qt zu lernen, als
GTK-TreeViews einzusetzen. So bin ich überhaupt erst zu Qt gekommen.

Größter Nachteil von GTK aber: Die Aufteilung in x Einzelbibliotheken, deren
verschiedene Versionen alle untereinander inkompatibel sind. Pango ist noch
das furchtbarste. Ich habe unter Linux noch nie mit einer Bibliothek dermaßen
viele Probleme gehabt wie mit Pango. Ein Update und alle GTK-Anwendungen sind
tot. Dann heißt es nachschauen, welche Bibliotheken mit welchen kompatibel
sind, um wieder ein lauffähiges System zusammenzustellen (also nicht nur GTK
wieder zum Laufen zu bringen, sondern auch passende wxWidgets und wxPython
Versionen zu finden, etc.) Grauenvoll. Ich hätte nie gedacht, dass es unter
Linux etwas vergleichbares gibt wie die "DLL-Hell" von Windows. Und GTK ist
wohl auch das einzige Beispiel.

Qt ist binärkompatibel über alle Versionen von Qt1 bis Qt3. Punkt. Qt4 war von
Anfang an als Bruch der Kompatibilität geplant. Qt3 wird weiter supportet und
Qt4 enthält vieles, was den Umstieg bei Bedarf erleichtert.


> wxPython - Ist nicht so schlecht dokumentiert, wie du glaubst. Auf der
> wxPython-Website findest du einiges an Material. Die Demo ist auch nicht
> ohne. Wenn du dir die mal ansiehst, dann siehst du, was alles möglich
> ist und hast auch schon ein Codebeispiel dafür. Es enthält bereits
> Objekte, die für das Drucken und eine Druckvorschau verwendet werden
> können (plattformübergreifend :-) ). Ein funktionierendes Grid-Widget
> ist auch mit dabei. Es gibt ziemlich viele, einfach zu verwendende,
> Widgets. Man muss sich also nicht aus einem, sehr mächtigen, Widget
> alles selber zusammenbasteln, sondern verwendet für jede "einfache
> Sache" auch ein "einfaches Widget". Das Beste daran ist, dass diese
> Widgets sowohl unter Windows wie auch unter Linux super aussehen.
> (wxPython wird wahrscheinlich mein Favorit werden, da die Möglichkeiten
> wirklich nicht schlecht sind.)

Vorteile von wxWidgets/wxPython:
* sehr vollständig
* plattformübergreifend

Nachteile von wxPython:
* Läuft (bevorzugt) mit GTK. Großer Nachteil, s.o.
* Inkompatibilitäten zwischen versch. Versionen
* Ist in keiner Version, die ich bisher getestet habe, stabil. Segfaults waren
bei meinen Tests nicht allzu selten.
* WYSIWYG-Design Unterstützung ist zwar vorhanden, aber nicht berauschend. Ich
habe mal Boa Constructor ausprobiert, war zwar brauchbar, aber genauso
instabil wie wxPython selbst.

Ehrlich, alles, wozu ich raten kann, ist Qt.

Stefan