Seite 1 von 3

GUI Toolkit welches ist das richtige?

Verfasst: Sonntag 6. Januar 2008, 16:34
von bankkind
Hallo Leute,

Ich arbeite momentan an einem kleinen Projekt, bisher war es eine reine Shell Anwendung. Ich möchte jetzt meiner Anwendung eine GUI verpassen. Ich kann mir vorstellen das es diese Fragen schon recht häufig gab, aber ich stell sie trotzdem.

Ich suche das perfekte Toolkit für mein Projekt. Es ist bisher eine Art TODO Listen Programm, was evtl irgendwann zu einem Kalender Programm zur Aufgaben und Terminverwaltung werden soll. Das heißt die grafische Oberfläsche soll später leicht erweiterbar sein.

Jetzt frage ich mich ob ich der einfachheithalber Tkinter oder doch ein wenig Arbeit investieren sollte und wxPython nehmen sollte.

allerdings muss ich sagen das wxPython, für mich momentan eine recht komplexe Materie darstellt. Ich finde bspweise die Doku ziemlich unübersichtlich, auch sonst gibt es meiner Meinung nach nur beschränkt gutes Lehrmaterial.

Vllt könnt ihr mir ja Helfen. Vielleicht gibt es noch eine Alternative zu den beiden Toolkits, die ich noch nicht kenne, die aber evtl. doch attraktiv und passend sein könnte.

Mit freundlichen grüßen

bankkind

Edit (Leonidas): Verschoben

Verfasst: Sonntag 6. Januar 2008, 16:43
von nkoehring
Hi bankkind!

Also der Thread ist schonmal unguenstig positioniert, wo wir hier doch extra fuer alle moeglichen GUI-Toolkits Threads hier haben.

Aber um zu deiner Frage zu kommen:
Es gibt keine richtige Antwort darauf, die auch eindeutig auf ein bestimmtes GUI-Toolkit verweisen kann.

Fuer eine Anwendung wie du sie nanntest (beschrieben waere zuviel gesagt), duerfte Tkinter genau so geeignet sein, wie wxPython.
Ich persoenlich kenne mich nur mit wxPython aus und verweise daher auf die Demo, die IMHO sehr gut zeigt, was moeglich ist und wie es gemacht wird und wuensche dir viel Spaß und Erfolg mit deiner GUI.

Gruß
nkoehring

Re: GUI Toolkit welches ist das richtige?

Verfasst: Sonntag 6. Januar 2008, 18:14
von gerold
bankkind hat geschrieben:allerdings muss ich sagen das wxPython, für mich momentan eine recht komplexe Materie darstellt. Ich finde bspweise die Doku ziemlich unübersichtlich, auch sonst gibt es meiner Meinung nach nur beschränkt gutes Lehrmaterial.
Hallo bankkind!

Die Doku von wxPython ist nicht schlecht. Man muss sich nur das "wxPython in Action"-Buch http://www.python-forum.de/topic-12878.html kaufen. Und auf einmal wird wxPython sogar einfach und (fast) durchgehend logisch... ;-)

Du hast uns nicht gesagt, unter welchen Betriebssystemen dein Programm hauptsächlich laufen soll.

mfg
Gerold
:-)

Re: GUI Toolkit welches ist das richtige?

Verfasst: Sonntag 6. Januar 2008, 18:51
von lunar
bankkind hat geschrieben:Jetzt frage ich mich ob ich der einfachheithalber Tkinter oder doch ein wenig Arbeit investieren sollte und wxPython nehmen sollte.
Tkinter würde ich nicht empfehlen, da diesem Toolkit komplexere Widgets wie z.B. Kalender und Datumsfelder fehlen.

Es gibt wohl drei GUI-Toolkits, die weit verbreitet und empfehlenswert sind:
  • wxWidgets
  • Qt4
  • Gtk
Alle drei Toolkits stehen für Windows und Linux zur Verfügung, alle drei Toolkits sind geeignet, um damit komplexe GUIs beliebiger Größenordnung zu erstellen, für alle drei Toolkits gibt es gute GUI-Designer, etc.

Wie du siehst, sind diese Toolkits äquivalent. Die Wahl hängt also hauptsächlich davon ab, für welches System/DE du programmieren willst, und was zu dir am besten passt.

Ich würde dir empfehlen, ein einfaches Beispielprogramm in allen drei Toolkits zu implementieren, dann siehst du schnell, wo deine Präferenzen liegen.

Ansonsten hängt die Wahl auch davon ab, welches DE du verwendest. Für mich als überzeugtem KDE-Anhänger führt wohl kein Weg an Qt4 vorbei, für Gnome-User steht wohl nur Gtk zur Wahl ;)

Verfasst: Sonntag 6. Januar 2008, 20:05
von nkoehring
DE ... *hust* => Desktop Environment :roll:

Verfasst: Sonntag 6. Januar 2008, 20:08
von Hyperion
nkoehring hat geschrieben:DE ... *hust* => Desktop Environment :roll:
Äh ... ja ... und nu?

Verfasst: Sonntag 6. Januar 2008, 21:11
von BlackJack
Und nu wissen das auch Leute die mit der nicht *so* gebräuchlichen Abkürzung nichts anfangen können. Für Windowsianer ist eine Unterteilung des "Betriebssystems" in Betriebssystem und GUI ja schon exotisch. ;-)

Verfasst: Sonntag 6. Januar 2008, 21:19
von lunar
BlackJack hat geschrieben:Und nu wissen das auch Leute die mit der nicht *so* gebräuchlichen Abkürzung nichts anfangen können. Für Windowsianer ist eine Unterteilung des "Betriebssystems" in Betriebssystem und GUI ja schon exotisch. ;-)
Desktop Environment ist halt so lang, aber nun gut, das nächste Mal schreib ich's aus für unsere lieben Freunde vom anderen Stern ;) Man möge mir meine Faulheit verzeihen...

Re: GUI Toolkit welches ist das richtige?

Verfasst: Sonntag 6. Januar 2008, 22:31
von Erwin
Eigentlich wollte ich in Tkinter proggen.
Aber da jetzt hier eine Diskussion darüber läuft, mit Sicherheit nicht die erste, will ich doch ein wenig nachfragen.
Wo ich doch derzeit, was GUI betrifft, noch offen für alles bin bzw. unerfahren.

Folgende Fragen liegen mir da auf der Zunge:

Welche GUI läuft auf allen Systemen?
Aber insbesondere auf Linux, unabhängig von Gnome (was ich benutze), KDE oder XCF (? heißt das 3. so?).
Und auch auf Windos/XP, wenn möglich.

Wenn ich das richtig verstanden habe, ist nur Tkinter von Anfang an dabei bei Python?

Können die anderen GUI etwas, was man mit Tkinter selbst auf Umwegen nicht bewerkstelligen kann?

Re: GUI Toolkit welches ist das richtige?

Verfasst: Sonntag 6. Januar 2008, 22:55
von lunar
Erwin hat geschrieben:Welche GUI läuft auf allen Systemen?
Jedes der bisher erwähnten Toolkits Qt4, PyGtk wxWidgets und Tkinter läuft sowohl unter Linux als auch unter Windows.
Wenn ich das richtig verstanden habe, ist nur Tkinter von Anfang an dabei bei Python?
Ja.
Können die anderen GUI etwas, was man mit Tkinter selbst auf Umwegen nicht bewerkstelligen kann?
Tkinter fehlen verschiedene komplexere Widgets wie z.B. Kalender, Datumsfelder, Rich-Text-Editor, HTML-Viewer, etc. Natürlich kann man diese auf Umwegen nachrüsten, in dem sie selbst programmiert, nur ist das extrem aufwändig. Auch sind die vorhandenen Tk-Widgets nicht so mächtig wie ihre Pendants in anderen Toolkits. Hinzu kommt, das Tk bis zum aktuellen Release keine Unterstützung für natives Look n' Feel hatte, Tk-Anwendungen übernahmen z.B. nicht den Windows XP oder Windows Vista Stil.

Ich persönlich würde eher mit anderen Toolkits programmieren, auch weil diese das Programmieren komplexerer GUIs besser unterstützen, in dem sie komfortable Patterns unterstützen. Qt4 z.B. unterstützt durchweg das MFC-Pattern für List Views sowie Actions, um Toolbars und Menüs einheitlich aufzusetzen. Tk kennt sowas nicht.

Nach meiner Erfahrung kommt man mit Tk bei kleinen GUIs schneller zum Ziel, dafür ist Tk umso umständlicher, je komplexer die GUI wird.

Re: GUI Toolkit welches ist das richtige?

Verfasst: Montag 7. Januar 2008, 00:21
von Erwin
lunar hat geschrieben: Tkinter fehlen verschiedene komplexere Widgets wie z.B. Kalender, Datumsfelder, Rich-Text-Editor, HTML-Viewer, etc. Natürlich kann man diese auf Umwegen nachrüsten, in dem sie selbst programmiert, nur ist das extrem aufwändig. Auch sind die vorhandenen Tk-Widgets nicht so mächtig wie ihre Pendants in anderen Toolkits. Hinzu kommt, das Tk bis zum aktuellen Release keine Unterstützung für natives Look n' Feel hatte, Tk-Anwendungen übernahmen z.B. nicht den Windows XP oder Windows Vista Stil.
Was meinst Du damit, dass die Pendants nicht so mächtig sind?

Achja, das mit dem Stil habe ich mir mal angesehen.
Also so weit ich das sehen konnte, passt sich Tkinter durchaus dem Stil des aktuellen Destops an.
Von Form und Farbe.
Habe es jetzt aber nur unter Linux getestet.
Dafür aber das Testprogramm per Konsole aufgerufen, um Einflussnahme Seite der IDLE auszuschließen.

Verfasst: Montag 7. Januar 2008, 00:23
von sma
Berücksichtigen sollte man bei der Wahl eines UI-Toolkits sicherlich auch die Lizenz.

Bei Qt 4 unterliegt AFAIK der GPL oder erfordert eine gesonderte kommerzielle Lizenz. Wenn man die eigene Software nicht auch unter der GPL zur Verfügung stellen will, kann das ein Problem sein.

Wx scheint eine Variante der GPL zu benutzen, die (ähnlich wie Classpath und OpenJDK) erlaubt, die Binärversion der Bibliothek eigenen Anwendungen beizulegen, ohne dass diese Anwendung unter der selben Lizenz stehen muss.

Bei Tk würde ich erwarten, dass ich das so wie Python selbst benutzen kann.

Stefan

Verfasst: Montag 7. Januar 2008, 00:24
von Erwin
Danke für den Hinweis.
So etwas ist natürlich auch sehr wichtig zu wissen, finde ich.

Verfasst: Montag 7. Januar 2008, 00:26
von Leonidas
sma hat geschrieben:Bei Qt 4 unterliegt AFAIK der GPL oder erfordert eine gesonderte kommerzielle Lizenz.
Stimmt nicht mehr, siehe dieser Thread, den es hier letztens gab.

Verfasst: Montag 7. Januar 2008, 01:00
von sma
Hm, ich hatte das doch gerade nachgeschaut...

Auf der PyQt-Seite steht: "PyQt v4 is licensed under the GNU GPL and under a commercial license for all platforms." - entweder die haben das noch nicht angepasst (es geht da um Version 4.3.x) oder aber die neue Regelung von Trolltech, neben GPL auch ausgewählte andere Opensource-Lizenzen zu erlauben, gilt nicht für die Python-Bindings. Das wäre bis auf weiteres meine Annahme, denn der Anbieter wird's ja wohl wissen.

Stefan

Verfasst: Montag 7. Januar 2008, 08:19
von bankkind
Du hast uns nicht gesagt, unter welchen Betriebssystemen dein Programm hauptsächlich laufen soll.
Das Programm soll hauptsächlich auf einem Windows Desktop laufen, aber da auf meinem Notebook Debian(mit GNOME) ist, denke ich ich würde es auch dort nutzen.

Re: GUI Toolkit welches ist das richtige?

Verfasst: Montag 7. Januar 2008, 17:17
von lunar
Erwin hat geschrieben:
lunar hat geschrieben: Tkinter fehlen verschiedene komplexere Widgets wie z.B. Kalender, Datumsfelder, Rich-Text-Editor, HTML-Viewer, etc. Natürlich kann man diese auf Umwegen nachrüsten, in dem sie selbst programmiert, nur ist das extrem aufwändig. Auch sind die vorhandenen Tk-Widgets nicht so mächtig wie ihre Pendants in anderen Toolkits. Hinzu kommt, das Tk bis zum aktuellen Release keine Unterstützung für natives Look n' Feel hatte, Tk-Anwendungen übernahmen z.B. nicht den Windows XP oder Windows Vista Stil.
Was meinst Du damit, dass die Pendants nicht so mächtig sind?
Bei Qt4 z.B. sind Toolbars automatisch frei platzierbar, sowohl als Toolbar als auch als Dock Window. Das Speichern der Positionen geschieht (fast) automatisch. Tkinter Toolbars können das nicht.

Beispiele bei anderen Toolkits kann ich dir nicht nennen, ich nutze nur Qt4. Deswegen sind meine Kenntnisse in Tkinter auch recht limitiert.

Als Vergleich reicht es aber eigentlich schon, sich mal die Liste der Tkinter-Widgets anzusehen, und mit der Liste der verfügbaren Qt4-Widgets zu vergleichen. Da fällt einem schnell auf, das Tkinter da weit weniger bietet. Für viele Anwendungen ist das nicht unbedingt dramatisch, bei komplexeren Anwendungen allerdings schon.
Also so weit ich das sehen konnte, passt sich Tkinter durchaus dem Stil des aktuellen Destops an. Habe es jetzt aber nur unter Linux getestet.
Sicher? Tkinter-Programme (Gentoo) sind bei mir anders dargestellt. Sie verwenden Motif zum Zeichnen (zumindest sehen sie so aus), was sich am schärfsten an mangelnder Kantenglättung der Schriften äußert.

Unter Windows können Tkinter-Programme den XP-Stil nicht übernehmen, sprich selbst wenn das Luna-Theme aktiviert ist, sehen die Buttons nicht so aus.

Verfasst: Montag 7. Januar 2008, 18:18
von Leonidas
Hmm, das kann sein. Ich hatte irgendwo im Hinterkopf, dass da jemand im IRC deswegen bei Riverbank angefragt hat - aber ich weiß nicht, was da dabei rausgekommen ist.

Andererseits im FAQ:
FAQ hat geschrieben:Do I need the commercial version of PyQt?

The easiest way to answer this is to ask "Am I using the commercial edition of Qt?". If so then you also need the commercial version of PyQt. If you are using the GPL version of Qt, then you only need the GPL version of PyQt.
Also richtet sich Riverbank nach Trolltech.

Verfasst: Montag 7. Januar 2008, 18:32
von sma
Aus dem FAQ-Eintrag lese ich genau das andere heraus: Die erwähnen nur die GPL-Version von Qt und sagen, dass PyQt damit auch der (Original-)GPL (ohne irgendwelche Ausnahmen) unterliegt und das würde genau die Ausnahme von Qt, das auch andere OS-Lizenzen möglich sind, ausschließen.

Man sollte also in jedem Fall nochmal schriftlich (und damit verbindlich) nachfragen, wenn das sonst ein Problem werden könnte.

Stefan

Verfasst: Montag 7. Januar 2008, 18:39
von Leonidas
sma hat geschrieben:Aus dem FAQ-Eintrag lese ich genau das andere heraus: Die erwähnen nur die GPL-Version von Qt und sagen, dass PyQt damit auch der (Original-)GPL (ohne irgendwelche Ausnahmen) unterliegt und das würde genau die Ausnahme von Qt, das auch andere OS-Lizenzen möglich sind, ausschließen.
Das kann nicht sein, da es Qt nur mit propietäter Lizenz und GPL/QPL gibt. Wenn ich ein BSD-Programm schreibe und GPL-Qt benutzen will (was ich inzwischen darf), dann folgt dem Eintrag dass ich GPL-PyQt nutzen darf.