So, jetzt folgt mein Installationsbericht für Qt4 unter Windows (besonders für gerold
).
Ich habe mir PyQt4 für Python 2.5 und Qt 4.2.3 als Binärpaket heruntergeladen (für die Quellen hatte ich keine Geduld, da das Übersetzen von PyQt4 eine halbe Ewigkeit dauert). Dazu die passende Qt Version 4.2.3. Nach dem endlosen Download habe ich zuerst Qt4 installiert. Das dauerte etwas länger, da Qt4 unbedingt noch Mingw herunterladen wollte. Nachdem das vollbracht war, habe ich PyQt4 installiert.
Mein Beispielprogramm war ein einfacher Port des Hello World Programms aus der Trolltech Doku:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
from qt import QApplication, QPushButton
def main():
app = QApplication(sys.argv)
hello = QPushButton('Hello world!')
hello.resize(100, 30)
hello.show()
return app.exec_loop()
if __name__ == '__main__':
main()
Das war relativ naiv anhand meiner PyQt3 Kenntnisse portiert und schlug prompt fehl: No module named qt... ok, ich hätte vorher die (Py)Qt4 Dokumentation lesen sollen
Anhand der Doku kam ich dann darauf qt durch PyQt4.QtGui zu ersetzen. Das schlug dann ebenfalls fehl, weil die nötigen DLLs nicht gefunden wurde. Die Lösung lag auch hier mehr oder minder auf der Hand: Das bin Verzeichnis der Qt Installation, welches neben den Utilities wie qmake oder moc auch die DLLs enthält, muss in den PATH eingetragen werden.
Nach der fälligen Neuanmeldung wurde die GUI zwar angezeigt, ich erhielt allerdings trotzdem einen AttributError: exec_loop war nicht bekannt. Die Ursache war ebenfalls die Anwendung meiner Qt3 Kenntnisse. In PyQt4 heißt die entsprechende Funktion exec_, wie aus der PyQt4 Klassenreferenz ersichtlich war.
Der folgende Code läuft einwandfrei unter Windows:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import QApplication, QPushButton
def main():
app = QApplication(sys.argv)
hello = QPushButton('Hello world!')
hello.resize(100, 30)
hello.show()
return app.exec_()
if __name__ == '__main__':
main()
Alles in allem war die ganze Sache doch recht schmerzlos. Es gab zwar einige kleinere Probleme, aber nichts, was sich nicht in einer anständigen INSTALL Datei erklären liese.
Beim Erforschen der PyQt4 Dokumentation sind mir übrigens noch einige Dinge im Vergleich zu PyQt3 positiv aufgefallen:
- PyQt4 bietet jetzt eine eigenen Klassenreferenz, die zwar noch C++ Snippets enthält, was aber laut Aussage von Riverbank Computing in zukünftigen Versionen korrigiert werden soll.
- Außerdem bietet PyQt4 das neue uic Modul, dass Qt4 Designer Dateien on-thy-fly laden kann (genau wie Glade). Dadurch entfällt die Ausführung von pyuic zur Übersetzung der GUI Dateien und der Qt Designer zieht in punkto Komfort mit glade gleich.