24.2 Einführung in PyQt 

Sie haben aus der vorangegangenen Zusammenfassung bereits einen groben Überblick darüber, was das Framework Qt (sprich cute, dt. pfiffig) und damit auch die Python-Bindings PyQt ausmacht. Dieser grobe Überblick soll hier nun verfeinert werden, und wir werden die Konzepte und Stärken von Qt vor allem von der technischen Seite her beleuchten.
Dazu beschäftigen wir uns im nächsten Abschnitt zunächst mit der Frage, wo und wie Qt und PyQt bezogen und installiert werden können. Danach geben wir eine Übersicht über die grundlegenden Konzepte des Qt-Frameworks.
24.2.1 Installation 

Um Qt-Anwendungen mit Python schreiben zu können, müssen zwei Komponenten installiert werden: das Qt-Framework und die zugehörigen Python-Bindings für dieses. Sollten Sie beides noch nicht auf Ihrem PC installiert haben und ein Windows-Betriebssystem einsetzen, können Sie das Komplettpaket von der Website des PyQt-Entwicklers unter http://www.riverbankcomputing.com herunterladen. Eine Qt-Installation ist dann nicht mehr vonnöten. Neben Qt und PyQt ist in diesem Komplettpaket auch die Entwicklungsumgebung Eric enthalten, mit der sich sehr komfortabel PyQt-Anwendungen schreiben lassen. Da wir Sie nicht auf eine bestimmte IDE festnageln möchten, werden wir Eric [Weitere Informationen über Eric und andere Entwicklungsumgebungen finden Sie im Anhang. ] für die folgenden Beispielprojekte nicht verwenden. Alternativ können Sie PyQt von der CD installieren, die diesem Buch beiliegt.
Wenn aus gewissen Gründen das Komplettpaket für Sie nicht in Frage kommt, beispielsweise weil Sie Linux einsetzen, können Qt und PyQt getrennt voneinander installiert werden. Qt kann auf der Website http://www.trolltech.com von Trolltech unter Developer Zone . Downloads . Qt kostenlos heruntergeladen werden. Alternativ können Sie Qt von der CD installieren, die diesem Buch beiliegt.
Beachten Sie noch mal, dass Qt und PyQt unter einem dualen Lizenzsystem stehen. Projekte, die Sie mit den angebotenen freien Versionen von Qt und PyQt entwickeln, dürfen Sie nur unter einer ebenfalls freien Lizenz, beispielsweise der GPL, veröffentlichen. Um ein kommerzielles Programm veröffentlichen zu dürfen, muss eine Lizenzgebühr entrichtet werden.
| Hinweis |
| Sollten Sie während der Installation von Qt eine Warnung bekommen, dass keine MinGW-Installation auf Ihrem Rechner gefunden wurde, können Sie diese ignorieren, sofern Sie ausschließlich mit PyQt arbeiten möchten. MinGW ist eine freie Compilerdistribution für C und C++. |
24.2.2 Grundlegende Konzepte von Qt 

Als Einführung in die Programmierung mit Qt bzw. PyQt soll in diesem Abschnitt eine Übersicht über die wichtigsten Konzepte und Stärken des Qt-Frameworks gegeben werden.
Umfang
Eine der größten Stärken von Qt ist der Funktionsumfang des Frameworks. Ihnen wird bereits aufgefallen sein, dass im Zusammenhang mit Qt nicht von einem Toolkit, sondern von einem Framework gesprochen wurde. Das hängt damit zusammen, dass der überwiegende Anteil an Klassen, die das Qt-Framework enthält, nichts mit der Programmierung grafischer Benutzeroberflächen zu tun hat, sondern anderweitige nützliche Funktionalität bereitstellt. So enthält das Qt-Framework beispielsweise Klassen zum Arbeiten mit XML-Daten oder zur Netzwerkkommunikation. Viele dieser Klassen sind zwar in Kombination mit Python aufgrund der Standardbibliothek faktisch überflüssig, bieten aber in Programmiersprachen wie C++, das über keine so umfangreiche Standardbibliothek verfügt, einen erheblichen Mehrwert.
Signale und Slots
Einer der größten Unterschiede zu anderen GUI-Toolkits ist das Signal-und-Slot-Prinzip, das Qt zur Kommunikation einzelner Objekte untereinander einsetzt. Bei jedem Ereignis, das in einem Qt-Objekt auftritt, beispielsweise beim Anklicken eines Buttons, wird ein sogenanntes Signal gesendet, das dann von verbundenen Slots empfangen werden kann. Diese Form der Kommunikation wird bei anderen Toolkits häufig durch Callback-Funktionen implementiert, was zwar effizienter ist, jedoch auch einige Nachteile mit sich bringt.
Näheres zum Signal-und-Slot-Prinzip erfahren Sie in Abschnitt 24.4.
Layouts
Das Qt-Framework unterstützt sogenannte Layouts in der grafischen Oberfläche eines Programms. Mithilfe eines Layouts lassen sich Steuerelemente relativ zueinander automatisch positionieren. Diese Gruppe von Steuerelementen kann dann gemeinsam verschoben oder in der Größe verändert werden, ohne ihre relativen Positionen zueinander zu verlieren.
Näheres zu Layouts erfahren Sie in Abschnitt 24.3.1.
Zeichenfunktionen
Qt stellt umfangreiche Funktionalität zum Zeichnen in der grafischen Benutzeroberfläche bereit. So erlaubt Qt das Zeichnen verschiedenster Formen mit verschiedensten Arten der Füllung oder des Linienstils. Darüber hinaus bietet Qt Möglichkeiten zur Transformation von Zeichnungen mithilfe einer Transformationsmatrix, was erstaunliche Effekte ermöglicht und wodurch sich Qt von vielen anderen GUI-Toolkits abhebt. Außerdem ist die Integration einer 3D-OpenGL-Szene in eine grafische Benutzeroberfläche mittels Qt sehr einfach. Dadurch könnte beispielsweise ein Anzeigeprogramm für 3D-Modelle sehr komfortabel in Qt geschrieben werden.
Darüber hinaus ermöglicht Qt das Lesen und Schreiben vieler Grafikformate, darunter vor allem auch des Vektorformats SVG.
Näheres zum Zeichnen mittels Qt erfahren Sie in Abschnitt 24.6.
Das Model-View-Konzept
Qt implementiert das sogenannte Model-View-Konzept, das eine Trennung von Form und Inhalt ermöglicht. So ist es mittels Qt möglich, die Daten, die ein Programm verarbeitet, in einer eigenen Klassenstruktur zu speichern – getrennt von der Funktionalität, die diese Daten anzeigt. Auf diese Weise wird der Programmaufbau insgesamt übersichtlicher, und die unabhängige Weiterentwicklung und Wiederverwertung einzelner Komponenten wird erleichtert.
Näheres zum Model-View-Konzept erfahren Sie in Abschnitt 24.7.
Behindertengerechte Oberflächen
Qt bietet als eines der wenigen Frameworks umfassende Unterstützung zum Schreiben barrierefreier Benutzeroberflächen. So arbeitet Qt mit den Technologien der drei größten Desktop-Betriebssysteme Windows, Linux und Mac OS X zusammen, um Programme mit grafischer Benutzeroberfläche für Menschen bedienbar zu machen, die aufgrund einer Behinderung sonst nicht dazu in der Lage wären.
Dieses Thema ist sehr speziell, weswegen wir im Folgenden nicht näher darauf eingehen werden. Sollten Sie daran interessiert sein, behindertengerechte Qt-Anwendungen zu schreiben, finden Sie Anleitungen dazu auf der Trolltech-Website unter dem Stichwort Accessibility.
Tools
Der nächste herausragende Bereich von Qt sind die mitgelieferten Tools. Bei einer Qt-Installation werden für gewöhnlich die Programme Qt Designer, Qt Assistant und Qt Linguist mit installiert. Ersteres ist ein Programm zum komfortablen Editieren einer grafischen Benutzeroberfläche. Wir werden im Laufe dieses Kapitels noch auf den Qt Designer zurückkommen.
Die ebenfalls mit gelieferten Tools Qt Assistant und Qt Linguist werden in diesem Buch nicht besprochen. Es sei nur erwähnt, dass es sich bei Qt Assistant um ein Tool zum Lesen der Qt-Hilfe und bei Qt Linguist um ein Hilfsmittel zur Lokalisierung von Qt-Anwendungen handelt.
Dokumentation
Als letzter Punkt ist die Dokumentation des Qt-Frameworks zu nennen, die entweder Ihrer Qt-Installation beiliegt oder im Internet auf der Website des Qt-Herstellers Trolltech zu finden ist. Die Qt-Dokumentation ist sehr umfangreich und mit vielen Beispielen versehen. Zudem finden Sie zahlreiche Beispielprogramme, die unterschiedliche Anwendungsgebiete von Qt abdecken.
Mit der PyQt-Installation erhalten Sie zudem eine auf Python abgestimmte Version der Qt-Dokumentation, in der alle Schnittstellen und ein Teil der Beispiele für Python beschrieben werden. Auch diese Dokumentation ist mittlerweile umfangreich genug, um mit ihr arbeiten zu können. Beachten Sie, dass in der PyQt-Dokumentation viele Beispiele noch nicht von C++ nach Python übersetzt worden sind.




bestellen





