[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