PySide

From FreeCAD Documentation
Revision as of 14:34, 8 August 2020 by Maker (talk | contribs) (Created page with "Die PySide Dokumentation bezieht sich auf die Klassen im Python Stil; da Qt jedoch ursprünglich eine C++ Bibliothek ist, sollten dieselben Informationen auch in der entsprech...")

Einführung

Die PySide Bibliothek ermöglicht den Zugriff auf den plattformübergreifenden grafischen Benutzeroberflächen Werkzeugsatz (GUI) Qt. Qt ist eine Sammlung von C++ Bibliotheken, aber mit Hilfe von PySide können die gleichen Komponenten von Python aus verwendet werden. Jede grafische Schnittstelle, die in C++ erstellt werden kann, kann auch in Python erstellt und modifiziert werden. Ein Vorteil der Verwendung von Python ist, dass Qt Oberflächen entwickelt und live getestet werden können, da wir die Quelldateien nicht kompilieren müssen.

Wenn du Installation FreeCAD, solltest du sowohl Qt als auch PySide als Teil des Pakets erhalten. Wenn du selbst Kompilierst, dann musst du überprüfen, ob diese beiden Bibliotheken installiert sind, damit FreeCAD korrekt läuft. Natürlich wird PySide nur funktionieren, wenn Qt vorhanden ist.

In der Vergangenheit benutzte FreeCAD PyQt, eine weitere Qt Bindung für Python, aber 2013 (1dc122dc9a) migrierte das Projekt zu PySide, weil es eine zulässigere Lizenz hat.

Für weitere Informationen siehe:

Mit PySide erstellte Beispiele. Links: ein einfacher Dialog. Rechts: ein komplexerer Dialog mit Diagrammen.

PySide in FreeCAD mit Qt5

FreeCAD wurde für die Verwendung mit Python 2 und Qt4 entwickelt. Als diese beiden Bibliotheken veraltet waren, wechselte FreeCAD zu Python 3 und Qt5. In den meisten Fällen erfolgte dieser Übergang, ohne dass die Rückwärtskompatibilität unterbrochen werden musste.

Normalerweise bietet das Modul PySide Unterstützung für Qt4, während PySide2 Unterstützung für Qt5 bietet. In FreeCAD ist es jedoch nicht notwendig, PySide2 direkt zu verwenden, da ein spezielles PySide Modul enthalten ist, um Qt5 zu behandeln.

Dieses PySide Modul befindet sich im Ext/ Verzeichnis einer für Qt5 kompilierten FreeCAD Installation.

/usr/share/freecad/Ext/PySide

Dieses Modul importiert einfach die erforderlichen Klassen aus PySide2, platziert sie aber im Namensraum PySide. Das bedeutet, dass in den meisten Fällen derselbe Code sowohl mit Qt4 als auch mit Qt5 verwendet werden kann, solange es das einzelne PySide Modul importiert.

PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools

Der einzige ungewöhnliche Aspekt ist, dass die PySide2.QtWidgets Klassen im PySide.QtGui Namensraum platziert werden.

PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox

Anfang

Beispiele für PySide Verwendung

Die Beispiele von PySide sind in 3 Teile unterteilt, die sich nach dem Grad der Exposition gegenüber PySide, Python und den FreeCAD-Interna unterscheiden. Die erste Seite gibt einen Überblick über PySide; die zweite und dritte Seite sind meist Code-Beispiele auf verschiedenen Ebenen.

Es wird erwartet, dass diese Beispiele für den Anfang nützlich sind, und danach kann der Benutzer andere Ressourcen online oder die offizielle Dokumentation hinzuziehen.

Anfang

Dokumentation

Es gibt einige Unterschiede in der Behandlung von Widgets in Qt4 (PySide) und Qt5 (PySide2). Der Programmierer sollte sich dieser Inkompatibilitäten bewusst sein und die offizielle Dokumentation konsultieren, wenn etwas auf einer bestimmten Plattform nicht wie erwartet zu funktionieren scheint. Nichtsdestotrotz wird Qt4 als veraltet angesehen, so dass die meiste Entwicklung auf Qt5 und Python 3 abzielen sollte.

Die PySide Dokumentation bezieht sich auf die Klassen im Python Stil; da Qt jedoch ursprünglich eine C++ Bibliothek ist, sollten dieselben Informationen auch in der entsprechenden C++ Referenz verfügbar sein.

Anfang