Buch zu PyQt4

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
netbie
User
Beiträge: 2
Registriert: Samstag 9. Mai 2009, 18:03

Hallo miteinander,

ich möchte gerne anfangen GUI zu programmieren und würde dafür gerne PyQt verwenden.. Ohne Buch geht das bei mir aber nicht. Nun gibt es ja von Mark Summerfield das Buch " Rapid GUI Programming with Python and Qt: The Definitive Guide to PyQt Programming". Glaubt man den Rezensionen, soll das ein gutes Buch sein. Es ist allerdings von 2007 und bezieht sich auf Qt4.3. Mittlerweile ist Qt4.5 aktuell. Inwieweit ist denn das in dem Buch präsentierte Wissen noch auf die neue Qt-Version anwendbar?. Vielleicht kennt hier jemand das Buch und kann dazu etwas sagen?

Danke!

Thomas
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das Buch bezieht sich auf die Grundlagen und stellt die Möglichkeiten von (Py)Qt vor. Deshalb veraltet das nicht. Es kamen ein paar Dinge dazu, aber dazu kann die Qt Dokumentation weiterhelfen.
Die ist übrigens so gut, dass man eigtl kein Buch braucht, man muss allerdings fähig sein die Beispiele in Python zu übertragen, was aber auch kein allzu großer Geistesakt ist.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

The book is based on Python 2.5, Qt 4.2, and PyQt 4.2, with notes regarding earlier and future versions where appropriate. All the examples have been tested on Windows, Mac OS X, and Linux with Python 2.5, Qt 4.2, and PyQt 4.2, and on Windows and Linux with Qt 4.3, and PyQt 4.3. The Python 2.6 versions of the examples have been tested on Linux with Python 2.6, Qt 4.4, and PyQt 4.4.
http://www.qtrac.eu/pyqtbook.html

Ich kann allerdings nicht beantworten, inwiefern die Releases der 4er-Reihe untereinander voll abwärtskompatibel sind. Vermuten würde ich mal, dass du gar keine oder eventuell nur ganz wenige Probleme bekommen wirst.
Zuletzt geändert von snafu am Dienstag 16. Juni 2009, 21:55, insgesamt 1-mal geändert.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Mit Deinen getroffenen Vorüberlegungen - Gui-Programmierung mit PyQt und "ohne Buch geht das nicht" kommst Du wohl kaum um dieses Buch herum. ;)
Das Buch versucht halt den Spagat zwischem anwenderfreundlichem Einstieg (es gibt sogar 3 Kapitel Pythoncrashkurs) und dem Abarbeiten der wichtigsten Aspekte in der GUI-Programmierung mit Qt. Die Einsteigerfreundlichkeit zeigt sich darin, das die verschied. Techniken immer mit Beispielen abgearbeitet werden. Die Beispiele kommen z.T. etwas unpythonisch daher, aber PyQt geht da eh seinen eigenen Weg.
Für meine Begriffe sind die Beispiele zu dicht gesät und lenken den Fokus zu sehr vom GUI-Verständnis ab. (Bzw. kannst Du die Beispiele auch einfacher haben, Qt und PyQt liefern Tutorialschnipsel mit aus.)
Auf der anderen Seite sind mir weiterführende Themen zu oberflächlich gestreift (Eventhandling, Mutlithreading), aber so ein Buch kann auch nicht allen Ansprüchen gerecht werden.

Nein, ich will das Buch nicht schlecht reden, für Einsteiger, die gewisse Vorkenntnisse in Python haben und ein tutorial-like "An-die-Hand-nehmen" mögen, ist es eine gute Wahl. Und für seltener Genutztes ist es sogar ein gutes Nachschlagewerk und spart so einiges an zusätzlicher Recherche.

Das Buch bezieht sich übringens auf Qt 4.2, wobei alle Beispiele mit auch mit 4.3 getestet wurden. Die vorgestellten Grundprinzipien gelten auch in Qt 4.5 nach wie vor.
Wichtigste Neuerung seit Qt 4.4, die fehlt, ist das WebKit-Modul. Mit PyQt 4.5 hat sich auch noch einiges an der API geändert (z.B. wurden die Signal/Slot-Deklarationen pythonisiert). Im Zweifelsfalle hilft Dir hierbei die Qt-eigene Dokumentation weiter.

Ok, Letzter!
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Inhaltlich ist das Buch nicht schlecht, aber vom Aufbau her ist es manchmal etwas verwirrend. Vor allem die zerstückelten und teilweise unvollständig abgedruckten
Beispiele irritieren manchmal. Hier sollte man sich die kompletten Beispiele besorgen und durchschauen.

Mit "unpythonisch" meint jerch vermutlich die * Imports wie z.b. from QtGui import *. Das wird in der Python Welt nicht gern gesehen. Es vereinfacht aber vieles. Nicht nur, dass man sich Tipparbeit spart sondern auch die Portierung von C++ Beispielen nach Python. Hier wird im Prinzip genauso vorgegangen. Würde man "pythonisch" vorgehen hätte man erhebliche Probleme.
lunar

Meines Wissens hat Summerfield auf der Website zum Buch aber auch korrigierte Versionen der Beispiele veröffentlicht, die beispielsweise keine Sternchen-Importe mehr verwenden.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Auf die Sternchen-Kritik hat der Autor uebrigens vor einer Weile reagiert und zumindest die online Sourcen aktualisiert.
Die gibt es auf der Buchseite (siehe snafu).
Erhebliche Probleme hat man nicht unbedingt, allerdings muss man darauf achten, woher die Klassen kommen - was aber sowieso nicht schlecht ist, wenn man das weiss.

Die Quelltexte zu zerstueckeln ist IMHO allerdings der einzig sinnvolle Weg das anzugehn. Die Teile sind leider zu lang um sie ganz abzudrucken und dann Bemerkungen dazu zu machen. Viele Autoren werfen die Kommentare dann durcheinander und bestimmte Zeilen mit Nummern zu kennzeichnen und dann darauf einzugehen finde ich persoenlich sehr unangenehm zu lesen. Will man daran arbeiten, dann ist man eh am Computer und dann kann sich auch gleich den kompletten Source anschaun ;)
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

cofi hat geschrieben:Auf die Sternchen-Kritik hat der Autor uebrigens vor einer Weile reagiert und zumindest die online Sourcen aktualisiert.
Die gibt es auf der Buchseite (siehe snafu).
Aha, wusste ich noch nicht. Mal schauen
cofi hat geschrieben: Erhebliche Probleme hat man nicht unbedingt, allerdings muss man darauf achten, woher die Klassen kommen - was aber sowieso nicht schlecht ist, wenn man das weiss.
Das ist ja das Problem. Mit dem Sternchen Import kann es dir egal sein, aus welcher Klasse bzw welchem Modul eine Funktion kommt. Importierst du mit Sternchen, spielt es keine Rolle. Und da es in C++ genauso gehandhabt wird wird es auch keine Namenskonflikte geben. Ich hatte jedenfalls immer Schwierigkeiten, wenn ich versucht habe, "pythonisch" zu importieren, weil man dauern auf der Suche nach der entsprechenden Klasse war, und hab es irgendwann aufgegeben.
cofi hat geschrieben: Die Quelltexte zu zerstueckeln ist IMHO allerdings der einzig sinnvolle Weg das anzugehn. Die Teile sind leider zu lang um sie ganz abzudrucken und dann Bemerkungen dazu zu machen. Viele Autoren werfen die Kommentare dann durcheinander und bestimmte Zeilen mit Nummern zu kennzeichnen und dann darauf einzugehen finde ich persoenlich sehr unangenehm zu lesen. Will man daran arbeiten, dann ist man eh am Computer und dann kann sich auch gleich den kompletten Source anschaun ;)
Das ist schon richtig, aber ich habe den Eindruck, dass die Beispiele teilweise auch unvollständig bzw gekürzt abgedruckt sind. Jedenfalls hat es mich des öfteren mal verwirrt, weil mir nicht klar war, wo der Programmschnipsel jetzt eigentlich hingehört.
BlackJack

@burli: Das funktioniert aber nur weil Du mit dem `Q` letztendlich *doch* immer explizit den Namensraum angibst. Das hat nichts mit C++ zu tun. Finde ich persönlich übrigens nicht so besonders schön. Ich finde die Lösung bei wxPython besser, dass das `wx` der Modulname/Namensraum ist, in dem Namen ohne einen Präfix stecken.
Antworten