[Python-de] Grafische Oberfläche

Gerold Penz gerold.penz at tirol.utanet.at
Sam Okt 29 11:55:39 CEST 2005


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.
> Noch eine Frage, wie speichert Ihr Daten ab? In einer MySQL Datenbank?

Hi Michael!

Da stellst hier ein Glaubensfrage, auf die ich dir nur mit Stichworten 
antworten kann.

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.

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.

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.)

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.)

Und jetzt zum Speichern:

Python macht es einem sehr einfach, Daten als einfache Textdatei ins 
Dateisystem zu speichern. Es gibt **nichts schnelleres**, um ein *paar* 
Daten abzuspeichern und wieder darauf zuzugreifen. Der Nachteil an 
diesem System ist aber, wenn sich die gewünschte Information in einer 
größeren Datei befindet, dann muss Python zuerst die ganze Datei laden 
um auf die Information zugreifen zu können.
Wenn eine Datei alle Daten enthält und diese Datei nur einmal eingelesen 
werden muss, dann ist eine einfache Textdatei an Geschwindigkeit nicht 
zu unterschätzen.

- einfache Textdatei
- einfache Textdatei mit Struktur
     --> pyYAML (YAML), XMarshaL (XML) oder optparse (INI)

Noch schneller geht es, wenn du kein Textformat sondern ein Binärformat 
verwendest. Zu diesem Thema siehst du dir am besten "Pickle" an.

Aber auch bei einem normalen Binärformat ist es immer noch so, dass die 
gesamte Datei eingelesen werden muss, um zu den Daten zu kommen. 
Ausgenommen du hast ein ausgeklügeltes System, mit dem du dir merkst, wo 
genau in der Binärdatei sich die gewünschten Daten befinden. Dann wären 
wir aber beim Thema Datenbanken, das ich weiter unten erkläre. Wenn du 
also viel Daten hast, auf die du nicht im Ganzen, sondern meistens nur 
teilweise zugreifen möchtest, dann bist du mit einer Datenbank gut beraten.

Bei Datenbanken ist es meist so, dass ein Serverdienst im Hintergrund 
auf Anfragen von einem Programm wartet. Dieser Serverdienst ist 
normalerweise darauf optimiert, aus vielen Daten, wenig Informationen 
herauszufischen. Das können Datenbanksysteme wirklich gut. Wenn du aber 
sehr viele Informationen auf einmal haben möchtest, dann ist von einer 
Datenbank abzuraten. Diese sind nicht darauf optimiert.

Es gibt eine kleine Datenbankschnittstelle, die mit wenig Daten und auch 
mit mittelgroßem Datenaufkommen gut klar kommt --> pySQLite.
pySQLite kannst du verwenden, wenn du mit SQL gut klar kommst und in 
deinem Programm deine Daten gerne mit SQL verwalten möchtest. Ein paar 
hundert Megabyte sollten für pySQLite kein Problem darstellen.

Sollten aber mehrere Programme bzw. Computer auf die gleichen Daten, 
evt. sogar gleichzeitig, zugreifen können, dann empfehle ich dir einen 
richtigen Datenbankdienst wie z.B. PostgreSQL oder MySQL.
MySQL ist schnell und einfach. PostgreSQL ist wahrscheinlich nicht so 
schnell wie MySQL, kann aber mehr und ist auf Serverebene besser 
programmierbar. (z.B. gespeicherte Prozeduren, Beziehungen zwischen 
Tabellen, Views, Trigger, ...)

Willst du einen stabilen Datenbankserver, dann verwende PostgreSQL, denn 
meine Warenwirtschaft würde ich MySQL NICHT anvertrauen.

Das MySQL, welches unter kommerzieller Lizenz steht, ist zwar etwas 
besser, aber dafür kostet es auch Geld.

mfg
Gerold
:-)

-- 
________________________________________________________________________
Gerold Penz - bcom - Programmierung
     gerold.penz at tirol.utanet.at | http://gerold.bcom.at | http://sw3.at
Ehrliche, herzliche Begeisterung ist einer der
     wirksamsten Erfolgsfaktoren. Dale Carnegie