PySide/de: Difference between revisions
(Created page with "Dieses Modul importiert einfach die erforderlichen Klassen aus {{incode|PySide2}}, platziert sie aber im Namensraum {{incode|PySide}}. Das bedeutet, dass in den meisten Fälle...") |
No edit summary |
||
(25 intermediate revisions by 5 users not shown) | |||
Line 8: | Line 8: | ||
{{TOCright}} |
{{TOCright}} |
||
<span id="Introduction"></span> |
|||
==Einführung== |
==Einführung== |
||
Die [[PySide |
Die [[PySide|PySide]] Bibliothek ermöglicht den Zugriff auf das plattformübergreifende GUI Werkzeugsatz Qt von [[Python/de|Python]]. Qt ist eine Sammlung von C++ Bibliotheken, aber mit Hilfe von PySide können die gleichen Komponenten von [[Python/de|Python]] aus verwendet werden. Jede grafische Oberfläche, 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 |
Wenn du FreeCAD installierst, solltest du sowohl Qt als auch PySide als Teil des Pakets erhalten. Wenn du selbst [[Compiling/de|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 |
In der Vergangenheit benutzte FreeCAD PyQt, eine weitere Qt-Einbindung für Python, aber 2013 ([https://github.com/FreeCAD/FreeCAD/commit/1dc122dc9a commit 1dc122dc9a]) migrierte das Projekt zu PySide, weil es eine umfassendere [[License/de|Lizenz]] hat. |
||
Für weitere Informationen siehe: |
Für weitere Informationen siehe: |
||
* [ |
* [https://en.wikipedia.org/wiki/PySide Wikipedia:PySide] |
||
* [ |
* [https://wiki.qt.io/Differences_Between_PySide_and_PyQt Differences Between PySide and PyQt] |
||
[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]] |
[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]] |
||
{{Caption|Mit PySide erstellte Beispiele. Links: ein einfacher Dialog. Rechts: ein komplexerer Dialog mit Diagrammen.}} |
{{Caption|Mit PySide erstellte Beispiele. Links: ein einfacher Dialog. Rechts: ein komplexerer Dialog mit Diagrammen.}} |
||
<span id="PySide_in_FreeCAD_with_Qt5"></span> |
|||
==PySide in FreeCAD mit Qt5== |
==PySide in FreeCAD mit Qt5== |
||
FreeCAD wurde für die Verwendung mit Python 2 und Qt4 entwickelt. Als diese beiden Bibliotheken veraltet waren, |
FreeCAD wurde für die Verwendung mit Python 2 und Qt4 entwickelt. Als diese beiden Bibliotheken veraltet waren, wurde FreeCAD auf Python 3 und Qt5 umgestellt. In den meisten Fällen erfolgte dieser Übergang, ohne dass die Rückwärtskompatibilität unterbrochen werden musste. |
||
Normalerweise bietet das |
Normalerweise bietet das {{incode|PySide}} Modul Unterstützung für Qt4, während {{incode|PySide2}} Unterstützung für Qt5 bietet. In FreeCAD ist es jedoch nicht notwendig, {{incode|PySide2}} direkt zu verwenden, da ein spezielles {{incode|PySide}} Modul enthalten ist, um Qt5 zu behandeln. |
||
Dieses {{incode|PySide}} Modul befindet sich im {{incode|Ext/}} Verzeichnis einer für Qt5 kompilierten FreeCAD Installation. |
Dieses {{incode|PySide}} Modul befindet sich im {{incode|Ext/}} Verzeichnis einer für Qt5 kompilierten FreeCAD Installation. |
||
Line 34: | Line 36: | ||
}} |
}} |
||
Dieses Modul importiert einfach die erforderlichen Klassen aus {{incode|PySide2}}, platziert sie aber im |
Dieses Modul importiert einfach die erforderlichen Klassen aus {{incode|PySide2}}, platziert sie aber im {{incode|PySide}} Namensraum. Das bedeutet, dass in den meisten Fällen derselbe Code sowohl mit Qt4 als auch mit Qt5 verwendet werden kann, solange wir das einzelne {{incode|PySide}} Modul verwenden. |
||
{{Code|code= |
{{Code|code= |
||
PySide2.QtCore -> PySide.QtCore |
PySide2.QtCore -> PySide.QtCore |
||
Line 42: | Line 44: | ||
}} |
}} |
||
Der einzige ungewöhnliche Aspekt ist, dass die {{incode|PySide2.QtWidgets}} Klassen im {{incode|PySide.QtGui}} Namensraum platziert werden. |
|||
{{Code|code= |
{{Code|code= |
||
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox |
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox |
||
}} |
}} |
||
⚫ | |||
<span id="Examples_of_PySide_use"></span> |
|||
[[#top|Anfang]] |
|||
==Beispiele für PySide Verwendung== |
==Beispiele für PySide Verwendung== |
||
* [[ |
* [[PySide_Beginner_Examples/de|PySide Anfänger Beispiele]], Hallo Welt, Ankündigungen, Text eingeben, Nummer eingeben. |
||
* [[ |
* [[PySide_Intermediate_Examples/de|PySide Beispiele für Fortgeschrittene]], Fenstergröße, Widgets ausblenden, Aufklappmenüs, Mausposition, Mausereignisse. |
||
* [[ |
* [[PySide_Advanced_Examples/de|PySide Zwischenbeispiele]], viele Widgets. |
||
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 Niveaus. |
|||
<div class="mw-translate-fuzzy"> |
|||
Die zu behandelnde Materie wird dabei auf drei Teile aufgeteilt, die sich in der Detailtiefe unterscheiden mit der PySide, Python und die FreeCAD-Interna dargestellt werden. Der erste Teil enthält einen Überblick und Hintergrundmaterial zu PySide und wie es funktioniert, während der zweite und dritte Teil hauptsächlich Beispiele für Programmcode auf verschiedenen Leveln enthalten. |
|||
</div> |
|||
<div class="mw-translate-fuzzy"> |
|||
Die Intention ist, dass die zugehörigen Seiten einfachen Pythoncode zur Anwendung von PySide vorstellen, der es einem Anwender erlaubt, sein Problem durch einfaches Kopieren und Einfügen der Beispiele zu lösen, ohne allzusehr von der eigentlichen Aufgabenstellung in FreeCAD abzulenken. Gegebenenfalls sind nur noch kleinere Anpassungen vorzunehmen. Die Hoffnung ist, dass damit nicht mehr das ganze Internet auf der Suche nach Antworten auf PySide-Fragen durchforstet werden muss. Gleichzeitig sollen jedoch damit nicht die zahlreichen im Web vorhandenen kompakten PySide-Tutorials und Dokumentationsseiten überflüssig gemacht werden. |
|||
</div> |
|||
[[#top|Anfang]] |
|||
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. |
|||
{{Top}} |
|||
<span id="Documentation"></span> |
|||
==Dokumentation== |
==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. |
|||
The PySide documentation refers to the Python-style classes; however, since Qt is originally a C++ library, the same information should be available in the corresponding C++ reference. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
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. |
|||
[[#top|Anfang]] |
|||
⚫ | |||
⚫ | |||
⚫ | |||
{{Top}} |
|||
{{Docnav/de |
{{Docnav/de |
||
Line 84: | Line 79: | ||
[[Category:Developer Documentation{{#translation:}}]] |
[[Category:Developer Documentation{{#translation:}}]] |
||
[[Category:Python Code{{#translation:}}]] |
[[Category:Python Code{{#translation:}}]] |
||
⚫ |
Latest revision as of 10:38, 9 April 2024
Einführung
Die PySide Bibliothek ermöglicht den Zugriff auf das plattformübergreifende GUI Werkzeugsatz Qt von Python. Qt ist eine Sammlung von C++ Bibliotheken, aber mit Hilfe von PySide können die gleichen Komponenten von Python aus verwendet werden. Jede grafische Oberfläche, 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 FreeCAD installierst, 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-Einbindung für Python, aber 2013 (commit 1dc122dc9a) migrierte das Projekt zu PySide, weil es eine umfassendere 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, wurde FreeCAD auf Python 3 und Qt5 umgestellt. In den meisten Fällen erfolgte dieser Übergang, ohne dass die Rückwärtskompatibilität unterbrochen werden musste.
Normalerweise bietet das PySide
Modul 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 PySide
Namensraum. Das bedeutet, dass in den meisten Fällen derselbe Code sowohl mit Qt4 als auch mit Qt5 verwendet werden kann, solange wir das einzelne PySide
Modul verwenden.
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
Beispiele für PySide Verwendung
- PySide Anfänger Beispiele, Hallo Welt, Ankündigungen, Text eingeben, Nummer eingeben.
- PySide Beispiele für Fortgeschrittene, Fenstergröße, Widgets ausblenden, Aufklappmenüs, Mausposition, Mausereignisse.
- PySide Zwischenbeispiele, viele Widgets.
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 Niveaus.
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.
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.
- Qt Module verfügbar von PySide2 (Qt5).
- Alle Qt Klassen nach Modulen in Qt5 für C++.
- Qt-Module verfügbar von PySide (Qt4).
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub