Eine wichtige Tatsache ist, dass PyQt4 für einige Dinge zwei Versionen seiner APIs hat. Bei Elementen der Version 1 handelt es sich beispielsweise um die Verwendung QString
anstelle von unicode
und QVariant
(im Grunde genommen nur um einen Wrapper, glaube ich - ich habe noch nie etwas getan, das sie verwendet) anstelle des Wraps. Version 2, die in Python 2 aktiviert werden kann und in Python 3 aktiviert ist, ist viel besser (obwohl an vielen Stellen immer noch unpythonisch - PySide ist es auch, aber es wird deutlich besser. Es gibt noch einige Inkompatibilitäten mit ihnen; PyQt4 hat QtCore.pyqt(Signal|Slot|Property)
, PySide hatQtCore.(Signal|Slot|Property)
.
Für ein eigenes Projekt habe ich beschlossen, beide ohne Änderungen am Code zu unterstützen. Ich bevorzuge PySide, aber unter Windows verteile ich mit PyQt4, da es derzeit für die Verteilung etwas kleiner ist. Meine Lösung besteht darin, nach PySide zu suchen und einen Import-Hook einzufügen, um PyQt4-Importe nach PySide umzuleiten. Wenn dies nicht der Fall ist, reparieren Sie PyQt4 so, dass es ordnungsgemäß funktioniert.
Die verwendeten Dateien:
- pyqt4pysideimporter.py
- zip_imp.py (für py2exe-Unterstützung)
- make_gui.py (mein Skript zum Erstellen von .ui-Dateien und .qrc-Dateien mit pyside- oder pyqt4-Tools und zum Korrigieren der Importe als konsistent; Abfragen nach Dateiänderungen und Neuerstellen der geänderten - nichts Hightech wie inotify)
Dann Sie gerade import pyqt4pysideimporter
und pyqt4pysideimporter.autoselect()
(wie main.py
in diesem Repository). Und danach kannst du einfach import PyQt4
.
Nebenbei: Vor einigen Tagen wurde auf der PySide-Mailingliste auch angegeben, dass Python 3 in den nächsten Monaten vollständig unterstützt werden soll.