GUI Toolkit welches ist das richtige?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

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
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

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
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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 ;)
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

DE ... *hust* => Desktop Environment :roll:
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

nkoehring hat geschrieben:DE ... *hust* => Desktop Environment :roll:
Äh ... ja ... und nu?
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. ;-)
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...
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

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?
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
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.
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

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.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Danke für den Hinweis.
So etwas ist natürlich auch sehr wichtig zu wissen, finde ich.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

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.
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten