PySide/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "Ajout d'un nouveau widget, par exemple un dockWidget (qui peut être placé dans l'un des panneaux latéraux de FreeCAD) est facile:")
No edit summary
(47 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<languages/>
{{Note|PySide|Depuis peu, FreeCAD travaille avec [http://qt-project.org/wiki/PySide PySide] au lieu de PyQt. Ce changement a été principalement fait pour adapter la licence, PySide ayant une licence LGPL qui est plus compatible avec FreeeCAD. A part cela, PySide fonctionne exactement de la même manière que PyQt, et dans FreeCAD vous pouvez généralement utiliser l'un ou l'autre, comme vous désirez. Si vous choisissez d'utiliser PySide, il suffit de remplacer tous les "PyQt" dans les exemples de code ci-dessous avec "PySide".
{{docnav/fr
|[[Pivy/fr|Pivy]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
}}


==PySide==
[http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt Differences entren PySide et PyQt]}}


[https://fr.wikipedia.org/wiki/PySide PySide] est un outil Python mutiplateforme obligatoire pour créer des GUI en Qt. FreeCAD utilise PySide pour tous les objectifs de la GUI (interface utilisateur graphique) dans Python. PySide est une alternative au paquet PyQt qui était auparavant utilisé par FreeCAD pour son interface graphique. PySide à une licence plus permissive. Voir [http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt Differences Between PySide and PyQt] pour plus d'information sur ces différences.
[http://fr.wikipedia.org/wiki/PyQt PyQt] est un module python qui permet aux applications python de créer, d'accéder et de modifier les applications '''[http://fr.wikipedia.org/wiki/Qt Qt]'''.<br />
Vous pouvez l'utiliser par exemple:<br />
* pour créer vos propres programmes Qt en python,<br />
* ou pour accéder et modifier l'interface d'une application qt en cours d'exécution, comme FreeCAD.


Les utilisateurs de FreeCAD atteignent souvent les limites tout en utilisant l'interface intégrée. Mais pour les utilisateurs qui souhaitent personnaliser leurs opérations alors l'interface Python existe et est documentée dans le [[Python_scripting_tutorial/fr| Didacticiel de scripts Python]]. L'interface Python pour FreeCAD donne une grande flexibilité et augmente la puissance de FreeCAD. Pour cette interaction, utilisateur Python et Freecad , nous utilisons PySide qui est est documenté sur cette page.
En utilisant le module PyQt dans FreeCAD, vous avez le contrôle total de son interface.
Vous pouvez par exemple:
* Ajouter vos propres fenêtres, des widgets et des barres d'outils.
* Ajouter ou masquer des éléments des fenêtres existantes.
* Changer, rediriger ou ajouter des connexions entre tous ces éléments.


Python offre la mention "print" qui donne le code:
PyQt dispose d'une vaste documentation sur [http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html son API] , et il a de nombreux tutoriels sur le net pour vous en apprendre le fonctionnement.

Si vous voulez travailler sur l'interface de FreeCAD, la première chose à faire est de créer une référence à la fenêtre principale de FreeCAD.<br />
Faisons:
{{Code|code=
import sys
from PySide import QtGui ,QtCore
app = QtGui.qApp
mw = app.activeWindow()
}}
Ensuite, vous pouvez par exemple naviguer à travers tous les widgets de l'interface:
{{Code|code=
{{Code|code=
print 'Hello World'
for child in mw.children():
print 'widget name = ', child.objectName(), ', widget type = ', child
}}
}}
Avec l'instruction Python print vous avez seulement un contrôle limité de l'apparence et du comportement. PySide fournit le contrôle manquant et gère également les environnements (tels que l'environnement de fichier macro FreeCAD) où les installations intégrées de Python ne sont pas suffisantes
Les widgets d'une interface Qt sont généralement imbriqués dans des "conteneurs" widgets, de sorte que les enfants de notre fenêtre principale peuvent contenir d'autres enfants. Selon le type de widget, vous pouvez faire énormément de choses.<br />
Vérifiez la documentation de l'API pour voir ce qui est possible.


Les capacités de PySide varient de:
Ajout d'un nouveau widget, par exemple un dockWidget (qui peut être placé dans l'un des panneaux latéraux de FreeCAD) est facile:
{{Code|code=
myWidget = QtGui.QDockWidget()
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)
}}
You could then add stuff directly to your widget:
{{Code|code=
myWidget.setObjectName("my Nice New Widget")
myWidget.resize(QtCore.QSize(300,100)) # sets size of the widget
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
}}
But a preferred method is to create a UI object which will do all of the setup of your widget at once. The big advantage is that such an UI object can be [[Dialog creation|created graphically]] with the Qt Designer program. A typical object generated by Qt Designer is like this:
{{Code|code=
class myWidget_Ui(object):
def setupUi(self, myWidget):
myWidget.setObjectName("my Nice New Widget")
myWidget.resize(QtCore.QSize(300,100).expandedTo(myWidget.minimumSizeHint())) # sets size of the widget


[[File:PySideScreenSnapshot1.jpg]]
self.label = QtGui.QLabel(myWidget) # creates a label
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))
[[File:PySideScreenSnapshot2.jpg]]
self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))

'''Familiarisez-vous avec des exemples concrets de PySide'''
* [[PySide_Beginner_Examples/fr|Exemples débutants PySide]] (Bonjour tout le monde, annonces, saisir du texte, entrez le numéro)
* [[PySide_Intermediate_Examples/fr| Exemples perfectionnement PySide]] (fenêtre dimensionnement, cacher des widgets, des menus contextuels, position de la souris, les événements de souris)
* [[PySide_Advanced_Examples/fr| Exemples avancés PySide]] (widgets, etc.)

Elles divisent l'objet en 3 parties, différenciées selon le niveau de connaissance de PySide, Python et l FreeCAD. La première page est un aperçu et un documents de référence donnant une description de PySide et comment il est mis en place tandis que les deuxième et troisième pages sont pour la plupart des exemples de code à différents niveaux.

L'intention est que les pages associées fourniront du code Python simple pour exécuter PySide de sorte que l'utilisateur travaillant sur un problème peut facilement copier le code, le collez-le dansson propre travail, l'adapter si nécessaire et retourner à leur résolution de problèmes avec FreeCAD. J'espère qu'ils n' auront pas à aller fouiller à travers l'Internet à la recherche de réponses aux questions PySide. Dans le même temps cette page n' est pas destinée à remplacer les différents tutoriels PySide complets et les sites de référence disponibles sur le web.

{{docnav/fr
|[[Pivy/fr|Pivy]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
}}
}}
To use it, you just need to apply it to your freshly created widget like this:
{{Code|code=
app = QtGui.qApp
FCmw = app.activeWindow()
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
}}
{{docnav|Pivy|Scripted objects}}


{{Userdocnavi/fr}}
[[Category:Poweruser Documentation]]

[[Category:Poweruser Documentation/fr]]


[[Category:Developer/fr]]

[[Category:Developer Documentation/fr]]
{{clear}}
{{clear}}
<languages/>

Revision as of 12:04, 25 August 2019

PySide

PySide est un outil Python mutiplateforme obligatoire pour créer des GUI en Qt. FreeCAD utilise PySide pour tous les objectifs de la GUI (interface utilisateur graphique) dans Python. PySide est une alternative au paquet PyQt qui était auparavant utilisé par FreeCAD pour son interface graphique. PySide à une licence plus permissive. Voir Differences Between PySide and PyQt pour plus d'information sur ces différences.

Les utilisateurs de FreeCAD atteignent souvent les limites tout en utilisant l'interface intégrée. Mais pour les utilisateurs qui souhaitent personnaliser leurs opérations alors l'interface Python existe et est documentée dans le Didacticiel de scripts Python. L'interface Python pour FreeCAD donne une grande flexibilité et augmente la puissance de FreeCAD. Pour cette interaction, utilisateur Python et Freecad , nous utilisons PySide qui est est documenté sur cette page.

Python offre la mention "print" qui donne le code:

print 'Hello World'

Avec l'instruction Python print vous avez seulement un contrôle limité de l'apparence et du comportement. PySide fournit le contrôle manquant et gère également les environnements (tels que l'environnement de fichier macro FreeCAD) où les installations intégrées de Python ne sont pas suffisantes

Les capacités de PySide varient de:

à

Familiarisez-vous avec des exemples concrets de PySide

Elles divisent l'objet en 3 parties, différenciées selon le niveau de connaissance de PySide, Python et l FreeCAD. La première page est un aperçu et un documents de référence donnant une description de PySide et comment il est mis en place tandis que les deuxième et troisième pages sont pour la plupart des exemples de code à différents niveaux.

L'intention est que les pages associées fourniront du code Python simple pour exécuter PySide de sorte que l'utilisateur travaillant sur un problème peut facilement copier le code, le collez-le dansson propre travail, l'adapter si nécessaire et retourner à leur résolution de problèmes avec FreeCAD. J'espère qu'ils n' auront pas à aller fouiller à travers l'Internet à la recherche de réponses aux questions PySide. Dans le même temps cette page n' est pas destinée à remplacer les différents tutoriels PySide complets et les sites de référence disponibles sur le web.