Welches GUI-Toolkit für folgende Anforderungen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

Hallo Leute,

ich wurde mit der Erstellung eines Kundenverwaltungsprogramms beauftragt. Da ich bis auf ein paar kleinere Konsolenausflüge mit Python nichts weiter gemacht habe, mich die Sprache aber für dieses Projekt reizen würde, bin ich noch auf der Suche nach einer GUI, die es sich lohnt zu erlernen und einzusetzen, wenn diese die folgenden Kriterien erfüllen soll.
  • - weitverbreitet/gut dokumentiert & zukunftssicher
    - performant
    - unter Windows & Linux ohne großen Aufwand lauffähig
    - leicht & simpel programmierbar
Was das Projekt selbst betrifft. Der Benutzer sollte die Möglichkeit haben simpel Daten einzugeben und diese bei Bedarf wieder aus einer Datenbank herauslesen zu können. Idealerweise sollten ausgelesen Daten in einer Art Tabelle präsentiert werden.

Ich denke das reicht für eine grobe Vorstellung - was denkt ihr - zu was sollte ich greifen?

Ich danke euch. :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SYVO hat geschrieben:Ich denke das reicht für eine grobe Vorstellung - was denkt ihr - zu was sollte ich greifen?
PyQt, wxPython oder PyGTK.

Wobei keines davon jetzt besonders umwerfend toll dokumentiert wäre dass ich da begeistert wäre. Zukunftssicher ist aber Qt und GTK+ auf jeden Fall und bei wxPython weiß ich dass nicht aber da es seit so vielen Jahren existiert glaube ich nicht dass es irgendwann einfach verschwindet.

Performant: Sind alle in C (GTK+) oder C++ (Qt, wxWidgets) geschrieben und bei der Applikation die du so beschreibst braucht man sowieso kaum so viel performance. Gute List-Widgets könnten wohl hilfreich sein.

Windws und Linux kriegst du mit allen dreien hin. Wenn Mac auch noch nötig wäre, würde ich von PyGTK zurzeit abraten.

Leicht und simpel programmierbar: keines. Ich persönlich finde alle ziemlich ätzend zu programmieren entweder weil die API so komisch ist (wxPython), das Binding sich zu sehr nach C++ anfühlt (PyQt) oder weil für viele Sachen keine brauchbare Dokumentation existiert (PyGTK).

Du hast aber nicht gesagt was du genau brauchst? Gute List-Widgets? Natives Aussehen? Verwendbarkeit für propietäre Programme?

Edit: Parasite scheint ein nettes Tool zu sein um Firbug-mäßig GTK-Applikationen zu debuggen.
Zuletzt geändert von Leonidas am Dienstag 20. Januar 2009, 19:35, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

SYVO hat geschrieben:
  • - weitverbreitet/gut dokumentiert & zukunftssicher
    - performant
    - unter Windows & Linux ohne großen Aufwand lauffähig
    - leicht & simpel programmierbar
Was verstehst du in diesem Zusammenhang unter "performant"?

Der letzte Punkt scheint mir nicht so einfach mit den anderen unter einen Hut zu bringen. Was die "Leichtigkeit" der Programmierung angeht, so ist Tkinter IMHO unschlagbar und auch unter Windows und Linux praktisch mit identischem Code lauffähig. Wenn man weiß, wo man suchen muss, ist es ausreichend gut dokumentiert. Wie zukunftssicher es ist, weiß ich nicht. Allerdings sieht es verglichen mit den anderen in Frage kommenden Toolkits vergleichsweise bescheiden aus und es gibt kein fertiges Tabellenwidget. Das selbst zu machen, wäre aber auch kein wirkliches Problem.
lunar

Wenn es die Lizenz deiner Anwendung oder das Budget des Projekts zulässt, nutze PyQt4.

Es ist zukunftssicher, vielfach bewährt, zumindest auf C++-Seite hervorragend dokumentiert. Die PyQt4 Klassenreferenz ist zwar eher miserabel, nur benötigt man die auch so gut wie nie. Die C++-Doku ist die beste Anlaufstelle, für PyQt-Spezifika reicht fast immer der "Reference Guide".

Qt4 gibt es für Windows, Mac und Unix/X11. Das schöne ist allerdings, dass der Quellcode nicht einfach nur "läuft" (so wie bei Swing), sondern die Benutzeroberfläche auch an Konventionen und Eigenheiten der spezifischen Plattform angepasst wird, so dass sie aussieht wie ein natives Programm.

Qt4 ist gut dokumentiert, intuitiv strukturiert und gut dokumentiert, daher sollte der Einstieg einfach fallen. Allerdings bietet Qt4 auch Dinge, die so kein anderes Toolkit bietet (zumindest nicht in dem Maße an Qualität). Für deinen Anwendungsfall dürfte das hervorragende Model-View-Framework für Listenwidgets von Interesse sein, dass mittels QtSql auch Datenbankunterstützung bietet. Das Anzeigen von Daten aus einer Datenbanktabelle ist somit mit wenigen Codezeilen getan.
abgdf

Hi,

wenn man die Lizenzprobleme gelöst kriegt, würde ich auch zu PyQt neigen. Allerdings: Ist z.B. Code für Qt3 unter Qt4 nicht obsolet, also nicht lauffähig, so daß es mit der Zukunftsfähigkeit so eine Sache ist ?

Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

abgdf hat geschrieben:Allerdings: Ist z.B. Code für Qt3 unter Qt4 nicht obsolet, also nicht lauffähig, so daß es mit der Zukunftsfähigkeit so eine Sache ist ?
Wenn du meinst ob Qt3-Code unter Qt4 läuft: jein. Eigentlich nicht, aber es gibt mit Qt3Support eine Library die eine Qt3-API bereitstellt.
lunar

abgdf hat geschrieben:Allerdings: Ist z.B. Code für Qt3 unter Qt4 nicht obsolet, also nicht lauffähig
Ja, ebenso wie Python 2.x Quellcode nicht unter Python 3k läuft.
so daß es mit der Zukunftsfähigkeit so eine Sache ist ?
Ist Python also nicht zukunftsfähig?

Im Übrigen hängt das stark von der persönlichen Auffassung von Zukunftsfähigkeit ab. Imho sollte ein Toolkit ab und zu mal überholt werden, wenn es zukunftsfähig sein möchte. Zum einen kann man so begangene Fehler im Entwurf grundlegend verbessern, zum anderen neue technische Möglichkeiten an die Anwendungsentwickler weitergeben. Für den Nutzer ist ja letztendlich eine schöne, moderne und stabile Anwendung wichtiger als die Möglichkeit, die Anwendung theoretisch auch im letzten Jahrtausend problemlos auszuführen ;)

@Leonidas
Das ist keine vollständige Qt3-API. Es ist eher eine Schicht, welche die Qt4-API so abwandelt, dass man bestehende Qt3-Anwendungen zumindest Großteils automatisch konvertieren kann. Manuelle Anpassungen sind trotzdem noch nötig.

Allerdings ist das nur die suboptimale Lösung, da man so an der alten API festhängt. Qt3support dient also eher dazu, einen Qt4-Prototypen zu erzeugen, von dem man dann mit der eigentlichen Portierung starten kann.

Was auf jeden Fall nicht funktioniert, ist eine Qt3-Anwendung mittels Qt3support unverändert gegen Qt4 zu übersetzen.
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

Hallo Leute,

ich bedanke mich für eure Vorschläge. Die Lizenz von PyQT bereitet diesem Projekt keine Probleme, weswegen ich mich hierfür entschieden habe.

Das Problem was ich nun noch habe, besteht in der Integration von PyQT in Eclipse. Hat jemand von euch Erfahrungen damit?
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi, also gerade wenn Datenbanken in's Spiel kommen würde ich auch Qt4 empfehlen. Hier kommt IMHO kein anderes Toolkit mit.

Python selbst hat eine hervorragende Anbindung an Datenbanken, aber das Bindeglied zwischen Datenbank und GUI ist bei Qt am besten ausgebaut. Qt bringt komplett eigene Module für verschiedene Funktionen mit
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

Existiert denn eine komplette Entwicklungsumgebung für PyQT, mit der ich einerseits die Oberfläche aber auch den Code erstellen kann?

Am liebsten wäre mir zwar Eclipse, aber alles andere ist auch in Ordnung. :)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Für die Oberfläche stellt Qt Designer bereit, aber für PyQt muss man die durch ein Programm laufen lassen, um sie einzubinden. Mir fällt leider grad nicht ein wie das heisst, ist aber bei PyQt dabei.

Was die Code Erstellung mit einem GUI zu tun hat .. ka ... aber wenn du eine IDE suchst, die sich gut in PyQt integriert, dann schau dir Eric an.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

cofi hat geschrieben:Für die Oberfläche stellt Qt Designer bereit, aber für PyQt muss man die durch ein Programm laufen lassen, um sie einzubinden.
Du meinst vermutlich pyuic4. Das ganze ist allerdings nicht notwendig.
abgdf

lunar hat geschrieben:Ja, ebenso wie Python 2.x Quellcode nicht unter Python 3k läuft.
...
Ist Python also nicht zukunftsfähig?
Ja, ich fürchte, so muß man das dann sehen.
Wenn die Abwärtskompatibilität gebrochen wird, hat ein Programm jedenfalls für die Benutzer ohne Anpassung/Neuschreiben keine Zukunft.

(Deshalb hat Microsoft z.B. ziemlich viel in Kauf genommen, damit möglichst viele alte Programme möglichst lange laufen konnten und zum Teil immer noch können. Eine der wenigen netten Seiten von M$.)

Gruß
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Gleichzeitig einer der Gründe wieso Windows so kaputt ist. Man kann nicht immer kompatibel sein, manchmal muss man einfach feststellen dass man Mist gebaut hat und diese Fehler beheben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

abgdf hat geschrieben:(Deshalb hat Microsoft z.B. ziemlich viel in Kauf genommen, damit möglichst viele alte Programme möglichst lange laufen konnten und zum Teil immer noch können. Eine der wenigen netten Seiten von M$.)
Schon mal die WinAPI gesehen? Also nett ist da stark relativ und ich könnte mir wesentlich netteres vorstellen.
lunar

SYVO hat geschrieben:Existiert denn eine komplette Entwicklungsumgebung für PyQT, mit der ich einerseits die Oberfläche aber auch den Code erstellen kann?
Für die Oberfläche gibt es den Qt Designer, für den Code kannst du eine beliebige IDE verwenden, folglich auch Eclipse. Es gibt mit Eric 4 aber auch eine in Qt4 selbst geschriebene IDE.

Über die Qualität beider Programme kann ich wenig sagen, da ich sie nicht nutze.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Eric ist ganz praktisch, der Designer auch. Ich würde aber versuchen, von Hand zu programmieren. Der Designer ist nicht allmächtig
lunar

burli hat geschrieben:Ich würde aber versuchen, von Hand zu programmieren.
Dann übernehme ich mal den Part, der davon abrät.
Der Designer ist nicht allmächtig
Es gibt wenig, was er nicht kann, und selbst dann kann man den Rest graphisch entwerfen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

burli hat geschrieben:Ich würde aber versuchen, von Hand zu programmieren.
Wieso?
Der Designer ist nicht allmächtig
Den Teil der im Designer nicht geht kann man ja von Hand programmieren aber deswegen muss man nicht alles selbst programmieren.
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

Hallo Leute,

ich melde mich hier nochmals. Lizenzrechtlich hat sich nun doch einiges getan, so dass ich PyQT für dieses Vorhaben nicht mehr benutzen kann.
Nun habe ich vor, das Projekt mit wxPython zu realisieren. Gibt es auch hierfür eine IDE samt Designer den ihr empfehlen könnt und der auch recht aktuell und kostenlos ist?
Antworten