PySide/de: Difference between revisions

From FreeCAD Documentation
(Created page with '[http://en.wikipedia.org/wiki/PyQt PyQt] ist ein Python-Modul, das Python-Anwendungen das erstellen, zugreifen und modifizieren von [http://en.wikipedia.org/wiki/Qt_(toolkit) Qt]…')
 
No edit summary
 
(107 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<languages/>
[http://en.wikipedia.org/wiki/PyQt PyQt] ist ein Python-Modul, das Python-Anwendungen das erstellen, zugreifen und modifizieren von [http://en.wikipedia.org/wiki/Qt_(toolkit) Qt]-Anwendungen ermöglicht. Sie können es zum Beispiel verwenden, um Ihre eigenen Qt-Programme in Python zu erstellen, oder zum Beispiel auf die Schnittstelle einer laufenden qt-Anwendung; wie FreeCAD; zuzugreifen und diese zu modifizieren.


{{Docnav/de
Durch die Verwendung des PyQt-Modul innerhalb FreeCAD, haben Sie die volle Kontrolle über seine Schnittstelle. Sie, können zum Beispiel:
|[[Pivy/de|Pivy]]
|[[FeaturePython_Objects/de|FeaturePython Objects]]
}}


{{TOCright}}
* Ihre eigenen Panels, Widgets und Symbolleisten hinzufügen
* In bestehenden Panels Elemente hinzufügen oder ausblenden
* Verbindungen zwischen all diesen Elementen ändern, umleiten oder neu einfügen


<span id="Introduction"></span>
PyQt verfügt über eine umfangreiche [http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html API documentation], und es gibt viele Tutorials im Netz, Ihnen beibringen, wie es funktioniert.
==Einführung==


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 Sie an der FreeCAD-Schnittstelle arbeiten wollen, ist das allererste das Sie tun müssen, schaffen Sie einen Verweis auf das FreeCAD Hauptfenster:


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.
import sys
from PyQt4 import QtGui
app = QtGui.qApp
mw = app.activeWindow()


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.
Dann können Sie zum Beispiel durch alle Widgets der Schnittstelle(Oberfläche) navigieren:


Für weitere Informationen siehe:
for child in mw.children():
* [https://en.wikipedia.org/wiki/PySide Wikipedia:PySide]
print 'widget name = ', child.objectName(), ', widget type = ', child
* [https://wiki.qt.io/Differences_Between_PySide_and_PyQt Differences Between PySide and PyQt]


[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]]
Die Widgets in einer Qt-Schnittstelle sind in der Regel in "Container"-Widgets verschachtelt, so dass die Kinder unseres Hauptfensters, ebenfalls noch weitere Kinder enthalten können. Je nach Widget-Typ gibt es eine Menge Dinge, die Sie tun können. Überprüfen Sie die API-Dokumentation um zu sehen, was alles möglich ist.
{{Caption|Mit PySide erstellte Beispiele. Links: ein einfacher Dialog. Rechts: ein komplexerer Dialog mit Diagrammen.}}


<span id="PySide_in_FreeCAD_with_Qt5"></span>
Hinzufügen eines neuen Widget, beispielsweise ein dockWidget(das in einem der FreeCAD-panels angezeigt wird) ist einfach:
==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.
myWidget = QtGui.QDockWidget()
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)


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.
Sie könnten dann auch direkt etwas zu Ihrem Widget hinzufügen:


Dieses {{incode|PySide}} Modul befindet sich im {{incode|Ext/}} Verzeichnis einer für Qt5 kompilierten FreeCAD Installation.
myWidget.setObjectName("my Nice New Widget")
{{Code|code=
myWidget.resize(QtCore.QSize(300,100)) # sets size of the widget
/usr/share/freecad/Ext/PySide
label = QtGui.QLabel("Hello World", myWidget) # creates a label
}}
label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size
label.setObjectName("myLabel") # sets its name, so it can be found by name


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.
Aber die bevorzugte Methode besteht darin, ein Benutzeroberflächen-Objekt zu schaffen, das die ganze Einstellung Ihres Widgets sofort in einem erledigt. Der große Vorteil besteht darin, dass solch ein UI-Objekt mit dem Qt Designer-Programm [[Dialog creation|grafisch erstellt]] werden kann. Ein typisches Objekt von Qt Designer generiert, sieht dann wie folgt aus:
{{Code|code=
PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools
}}


Der einzige ungewöhnliche Aspekt ist, dass die {{incode|PySide2.QtWidgets}} Klassen im {{incode|PySide.QtGui}} Namensraum platziert werden.
class myWidget_Ui(object):
{{Code|code=
def setupUi(self, myWidget):
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox
myWidget.setObjectName("my Nice New Widget")
}}
myWidget.resize(QtCore.QSize(300,100).expandedTo(myWidget.minimumSizeHint())) # sets size of the widget
{{Top}}
<span id="Examples_of_PySide_use"></span>
self.label = QtGui.QLabel(myWidget) # creates a label
==Beispiele für PySide Verwendung==
self.label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size
self.label.setObjectName("label") # sets its name, so it can be found by name
def retranslateUi(self, draftToolbar): # built-in QT function that manages translations of widgets
myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))


* [[PySide_Beginner_Examples/de|PySide Anfänger Beispiele]], Hallo Welt, Ankündigungen, Text eingeben, Nummer eingeben.
Um es zu benutzen, brauchen es Sie nur wie folgt, auf Ihr frisch erstelltes Widget anzuwenden:
* [[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.
myNewFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget
myNewFreeCADWidget.ui = myWidget_Ui() # load the Ui script
myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window


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.
{{docnav/de|Pivy/de|Parametrische Objekte erstellen}}
{{Top}}
<span id="Documentation"></span>
==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.
{{languages | {{en|PyQt}} {{es|PyQt/es}} {{ru|PyQt/ru}} {{se|PyQt/se}} }}


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.
[[Category:Poweruser Documentation]]
* [https://doc.qt.io/qtforpython/modules.html Qt Module] verfügbar von PySide2 (Qt5).
* [https://doc.qt.io/qt-5/modules-cpp.html Alle Qt Klassen nach Modulen] in Qt5 für C++.
* [https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html Qt-Module] verfügbar von PySide (Qt4).
{{Top}}

{{Docnav/de
|[[Pivy/de|Pivy]]
|[[FeaturePython_Objects/de|FeaturePython Objects]]
}}

{{Powerdocnavi{{#translation:}}}}
[[Category:Developer Documentation{{#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

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 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.

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