PySide/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
Line 1: Line 1:
<languages/>
<languages/>
<div class="mw-translate-fuzzy">
{{Docnav/fr
{{Docnav/fr
|[[Pivy/fr|Pivy]]
|[[Pivy/fr|Pivy]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
}}
}}
</div>


== Introduction ==
== Introduction ==


<div class="mw-translate-fuzzy">
[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 à PyQt qui était auparavant utilisée par FreeCAD. 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.
[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 à PyQt qui était auparavant utilisée par FreeCAD. 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.
</div>

When you [[Installing|install]] FreeCAD, you should get both Qt and PySide as part of the package. If you are [[Compiling|compiling]] yourself, then you must verify that these two libraries are installed, in order for FreeCAD to run correctly. Of course, PySide will only work if Qt is present.

In the past, FreeCAD used PyQt, another Qt binding for Python, but in 2013 ([https://github.com/FreeCAD/FreeCAD/commit/1dc122dc9a 1dc122dc9a]) the project migrated to PySide because it has a more permissible [[licence|license]].

For more information see:
* [http://en.wikipedia.org/wiki/PySide Wikipedia:PySide]
* [http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt Differences Between PySide and PyQt]

[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]]
{{Caption|Examples created with PySide. Left: a simple dialog. Right: a more complex dialog with graphs.}}


== PySide dans FreeCAD avec Qt5 ==
== PySide dans FreeCAD avec Qt5 ==
Line 20: Line 35:
}}
}}


<div class="mw-translate-fuzzy">
Ce module importe simplement les classes nécessaires depuis {{incode|PySide2}} mais les place dans l'espace de noms {{incode|PySide}}. Cela signifie que dans la plupart des cas, le même code peut être utilisé avec Qt4 et Qt5, à condition d'importer {{incode|PySide}}.
Ce module importe simplement les classes nécessaires depuis {{incode|PySide2}} mais les place dans l'espace de noms {{incode|PySide}}. Cela signifie que dans la plupart des cas, le même code peut être utilisé avec Qt4 et Qt5, à condition d'importer {{incode|PySide}}.
</div>
{{Code|code=
{{Code|code=
PySide2.QtCore -> PySide.QtCore
PySide2.QtCore -> PySide.QtCore
Line 33: Line 50:
}}
}}


== Informations PySide ==
== Real examples of PySide use ==

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.

Python offre la mention "print" qui donne le code:
{{Code|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:

[[File:PySideScreenSnapshot1.jpg]]

à

[[File:PySideScreenSnapshot2.jpg]]


<div class="mw-translate-fuzzy">
'''Familiarisez-vous avec des exemples concrets de PySide'''
'''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_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_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.)
* [[PySide_Advanced_Examples/fr| Exemples avancés PySide]] (widgets, etc.)
</div>


<div class="mw-translate-fuzzy">
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.
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.
</div>


<div class="mw-translate-fuzzy">
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.
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.
</div>

== Documentation ==

There are some differences in handling of widgets in Qt4 (PySide) and Qt5 (PySide2). The programmer should be aware of these incompatibilities, and should consult the official documentation if something doesn't seem to work as expected in a given platform. Nevertheless, Qt4 is considered obsolete, so most development should target Qt5 and Python 3.

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.
* [https://doc.qt.io/qtforpython/modules.html Qt Modules] available from PySide2 (Qt5).
* [https://doc.qt.io/qt-5/modules-cpp.html All Qt classes by module] in Qt5 for C++.
* [https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html Qt Modules] available from PySide (Qt4).


<div class="mw-translate-fuzzy">
{{Docnav/fr
{{Docnav/fr
|[[Pivy/fr|Pivy]]
|[[Pivy/fr|Pivy]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
|[[FeaturePython Objects/fr|Objets FeaturePython]]
}}
}}
</div>


{{Userdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}
[[Category:Poweruser Documentation{{#translation:}}]]
[[Category:Developer{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]

Revision as of 20:18, 15 May 2020

Introduction

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 à PyQt qui était auparavant utilisée par FreeCAD. PySide à une licence plus permissive. Voir Differences Between PySide and PyQt pour plus d'information sur ces différences.

When you install FreeCAD, you should get both Qt and PySide as part of the package. If you are compiling yourself, then you must verify that these two libraries are installed, in order for FreeCAD to run correctly. Of course, PySide will only work if Qt is present.

In the past, FreeCAD used PyQt, another Qt binding for Python, but in 2013 (1dc122dc9a) the project migrated to PySide because it has a more permissible license.

For more information see:

Examples created with PySide. Left: a simple dialog. Right: a more complex dialog with graphs.

PySide dans FreeCAD avec Qt5

FreeCAD a été développé pour être utilisé avec Python 2 et Qt4. Comme ces deux bibliothèques sont devenues obsolètes, FreeCAD est passé à Python 3 et Qt5. Dans la plupart des cas, cette transition s'est faite sans qu'il soit nécessaire de rompre la rétrocompatibilité.

Normalement, le module PySide fournit un support pour Qt4, tandis que PySide2 fournit un support pour Qt5. Cependant, dans FreeCAD, il n'est pas nécessaire d'utiliser directement PySide2 car un module spécial PySide est inclus pour gérer Qt5.

Ce module PySide est situé dans le répertoire Ext/ d'une installation de FreeCAD compilée pour Qt5.

/usr/share/freecad/Ext/PySide

Ce module importe simplement les classes nécessaires depuis PySide2 mais les place dans l'espace de noms PySide. Cela signifie que dans la plupart des cas, le même code peut être utilisé avec Qt4 et Qt5, à condition d'importer PySide.

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

Le seul aspect inhabituel est que les classes PySide2.QtWidgets sont placées dans l'espace de noms PySide.QtGui.

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

Real examples of PySide use

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.

Documentation

There are some differences in handling of widgets in Qt4 (PySide) and Qt5 (PySide2). The programmer should be aware of these incompatibilities, and should consult the official documentation if something doesn't seem to work as expected in a given platform. Nevertheless, Qt4 is considered obsolete, so most development should target Qt5 and Python 3.

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.