PySide/it: Difference between revisions
No edit summary |
No edit summary |
||
(27 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
{{docnav/it |
{{docnav/it |
||
|[[Pivy/it|Pivy]] |
|[[Pivy/it|Pivy]] |
||
|[[Interface_creation/it|Creare l'interfaccia]] |
|||
|[[FeaturePython Objects/it|Ogetti FeaturePython]] |
|||
}} |
}} |
||
{{TOCright}} |
{{TOCright}} |
||
<span id="Introduction"></span> |
|||
==Introduzione== |
==Introduzione== |
||
La libreria [[PySide/it|PySide]] dà accesso al toolkit Qt dell'interfaccia utente grafica multipiattaforma (GUI) di [[Python/it|Python]]. Qt è una raccolta di librerie C++, ma con l'aiuto di PySide, gli stessi componenti possono essere usati da [[Python/it|Python]]. Ogni interfaccia grafica che può essere creata in C++, può anche essere creata e modificata in Python. Un vantaggio dell'utilizzo di Python è che le interfacce Qt possono essere sviluppate e testate dal vivo, poiché non è necessario compilare i file sorgente. |
|||
<div class="mw-translate-fuzzy"> |
|||
[http://en.wikipedia.org/wiki/PySide PySide] è il legame tra Python e la multi-piattaforma GUI degli strumenti di Qt. FreeCAD usa PySide all'interno di Python per tutti gli effetti GUI (Interfaccia grafica per l'utente). PySide è una alternativa al pacchetto PyQt che è stato utilizzato in precedenza da FreeCAD per la sua GUI. PySide ha una licenza più permissiva. Per maggiori informazioni sulla differenza vedere [http://qt-project.org/wiki/Differences_Between_PySide_and_PyQt Differences Between PySide and PyQt]. |
|||
</div> |
|||
Quando si installa FreeCAD, si dovrebbe ottenere sia Qt che PySide come parte del pacchetto. Se si sta [[Compiling/it|compilando]], si deve verificare che queste due librerie siano installate affinché FreeCAD funzioni correttamente. Naturalmente, PySide funzionerà solo se è presente Qt. |
|||
In |
In passato, FreeCAD utilizzava PyQt, un'altra associazione Qt per Python, ma nel 2013 ([https://github.com/FreeCAD/FreeCAD/commit/1dc122dc9a commit 1dc122dc9a]) il progetto è migrato a PySide perché ha una [[License/it|Licenza]] più permissiva. |
||
Per ulteriori informazioni, vedere: |
|||
For more information see: |
|||
* [https:// |
* [https://it.wikipedia.org/wiki/PySide Wikipedia:PySide] |
||
* [https://wiki.qt.io/Differences_Between_PySide_and_PyQt |
* [https://wiki.qt.io/Differences_Between_PySide_and_PyQt Differenze tra PySide e PyQt] |
||
[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]] |
[[File:PySideScreenSnapshot1.jpg]] [[File:PySideScreenSnapshot2.jpg]] |
||
{{Caption| |
{{Caption|Esempi creati con PySide. A sinistra: una semplice finestra di dialogo. A destra: una finestra di dialogo più complessa con grafici.}} |
||
<span id="PySide_in_FreeCAD_with_Qt5"></span> |
|||
==PySide in FreeCAD |
==PySide in FreeCAD con Qt5== |
||
FreeCAD |
FreeCAD è stato sviluppato per essere utilizzato con Python 2 e Qt4. Poiché queste due librerie sono diventate obsolete, FreeCAD è passato a Python 3 e Qt5. Nella maggior parte dei casi questa transizione è stata eseguita senza la necessità di interrompere la compatibilità con le versioni precedenti. |
||
Normalmente, il modulo {{incode|PySide}} fornisce il supporto per Qt4, mentre {{incode|PySide2}} fornisce il supporto per Qt5. Tuttavia, in FreeCAD non è necessario utilizzare {{incode|PySide2}} direttamente, poiché è incluso uno speciale modulo {{incode|PySide}} per gestire Qt5. |
|||
Questo modulo {{incode|PySide}} si trova nella directory {{incode|Ext/}} di un'installazione di FreeCAD compilata per Qt5. |
|||
{{Code|code= |
{{Code|code= |
||
/usr/share/freecad/Ext/PySide |
/usr/share/freecad/Ext/PySide |
||
}} |
}} |
||
Questo modulo importa solo le classi necessarie da {{incode|PySide2}} e le inserisce nel namespace {{incode|PySide}}. Ciò significa che nella maggior parte dei casi lo stesso codice può essere utilizzato sia con Qt4 che con Qt5, purché utilizziamo il singolo modulo {{incode|PySide}}. |
|||
{{Code|code= |
{{Code|code= |
||
PySide2.QtCore -> PySide.QtCore |
PySide2.QtCore -> PySide.QtCore |
||
Line 44: | Line 44: | ||
}} |
}} |
||
L'unico aspetto insolito è che le classi {{incode|PySide2.QtWidgets}} sono posizionate nel namespace {{incode|PySide.QtGui}}. |
|||
{{Code|code= |
{{Code|code= |
||
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox |
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox |
||
}} |
}} |
||
{{Top}} |
{{Top}} |
||
<span id="Examples_of_PySide_use"></span> |
|||
==Examples of PySide use== |
|||
==Esempi di utilizzo di PySide== |
|||
* [[PySide_Beginner_Examples/it|Esempi di livello base di PySide]], Hello World, avvisi, inserire un testo, inserire un numero. |
|||
<div class="mw-translate-fuzzy"> |
|||
⚫ | |||
'''Per acquisire familiarità con alcuni esempi reali di PySide''' |
|||
* [[ |
* [[PySide_Advanced_Examples/it|Esempi di livello avanzato di PySide]], widget etc. |
||
⚫ | |||
* [[PySide Advanced Examples/it|Esempi di livello avanzato di PySide]] (widget etc.) |
|||
</div> |
|||
⚫ | Gli esempi di PySide sono divisi in 3 parti, differenziate per livello di esposizione a PySide, Python e alle parti incorporate in FreeCAD. La prima pagina contiene una panoramica e le basi della materia, fornisce una descrizione di PySide e di come è organizzato, mentre la seconda e la terza pagina contengono soprattutto degli esempi di codice di diversi livelli. |
||
<div class="mw-translate-fuzzy"> |
|||
⚫ | |||
</div> |
|||
Si ritiene che questi esempi siano utili per iniziare, dopodiché l'utente potrà consultare altre risorse online o la documentazione ufficiale. |
|||
<div class="mw-translate-fuzzy"> |
|||
Con le pagine allegate si intende fornire del semplice codice Python per eseguire PySide, in modo che l'utente possa facilmente copiarlo, incollarlo nel proprio lavoro, adattarlo se necessario, e risolvere i suoi problemi con FreeCAD. Sperando che non abbia bisogno di andare alla ricerca di risposte alle domande su PySide attraverso internet. Allo stesso tempo, queste pagine non vogliono sostituirsi ai vari tutorial completi e ai siti di riferimento a PySide presenti nel web. |
|||
</div> |
|||
{{Top}} |
{{Top}} |
||
= |
<span id="Documentation"></span> |
||
==Documentazione== |
|||
Ci sono alcune differenze nella gestione dei widget in Qt4 (PySide) e Qt5 (PySide2). Il programmatore dovrebbe essere consapevole di queste incompatibilità e dovrebbe consultare la documentazione ufficiale se qualcosa non sembra funzionare come previsto su una data piattaforma. Tuttavia, Qt4 è considerato obsoleto, quindi la maggior parte dello sviluppo dovrebbe mirare a Qt5 e Python 3. |
|||
La documentazione di PySide fa riferimento alle classi in stile Python; tuttavia, poiché Qt è originariamente una libreria C++, le stesse informazioni dovrebbero essere disponibili nel riferimento C++ corrispondente. |
|||
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 |
* [https://doc.qt.io/qtforpython/modules.html Moduli Qt] disponibile da PySide2 (Qt5). |
||
* [https://doc.qt.io/qt-5/modules-cpp.html |
* [https://doc.qt.io/qt-5/modules-cpp.html Tutte le classi Qt per modulo] in Qt5 per C++. |
||
* [https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html |
* [https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html Moduli Qt] disponibile da PySide (Qt4). |
||
{{Top}} |
{{Top}} |
||
{{docnav/it |
|||
<div class="mw-translate-fuzzy"> |
|||
|[[Pivy/it|Pivy]] |
|||
|[[Interface_creation/it|Creare l'interfaccia]] |
|||
</div> |
|||
}} |
|||
{{Powerdocnavi{{#translation:}}}} |
{{Powerdocnavi{{#translation:}}}} |
Latest revision as of 07:06, 7 April 2024
Introduzione
La libreria PySide dà accesso al toolkit Qt dell'interfaccia utente grafica multipiattaforma (GUI) di Python. Qt è una raccolta di librerie C++, ma con l'aiuto di PySide, gli stessi componenti possono essere usati da Python. Ogni interfaccia grafica che può essere creata in C++, può anche essere creata e modificata in Python. Un vantaggio dell'utilizzo di Python è che le interfacce Qt possono essere sviluppate e testate dal vivo, poiché non è necessario compilare i file sorgente.
Quando si installa FreeCAD, si dovrebbe ottenere sia Qt che PySide come parte del pacchetto. Se si sta compilando, si deve verificare che queste due librerie siano installate affinché FreeCAD funzioni correttamente. Naturalmente, PySide funzionerà solo se è presente Qt.
In passato, FreeCAD utilizzava PyQt, un'altra associazione Qt per Python, ma nel 2013 (commit 1dc122dc9a) il progetto è migrato a PySide perché ha una Licenza più permissiva.
Per ulteriori informazioni, vedere:
Esempi creati con PySide. A sinistra: una semplice finestra di dialogo. A destra: una finestra di dialogo più complessa con grafici.
PySide in FreeCAD con Qt5
FreeCAD è stato sviluppato per essere utilizzato con Python 2 e Qt4. Poiché queste due librerie sono diventate obsolete, FreeCAD è passato a Python 3 e Qt5. Nella maggior parte dei casi questa transizione è stata eseguita senza la necessità di interrompere la compatibilità con le versioni precedenti.
Normalmente, il modulo PySide
fornisce il supporto per Qt4, mentre PySide2
fornisce il supporto per Qt5. Tuttavia, in FreeCAD non è necessario utilizzare PySide2
direttamente, poiché è incluso uno speciale modulo PySide
per gestire Qt5.
Questo modulo PySide
si trova nella directory Ext/
di un'installazione di FreeCAD compilata per Qt5.
/usr/share/freecad/Ext/PySide
Questo modulo importa solo le classi necessarie da PySide2
e le inserisce nel namespace PySide
. Ciò significa che nella maggior parte dei casi lo stesso codice può essere utilizzato sia con Qt4 che con Qt5, purché utilizziamo il singolo modulo PySide
.
PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools
L'unico aspetto insolito è che le classi PySide2.QtWidgets
sono posizionate nel namespace PySide.QtGui
.
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox
Esempi di utilizzo di PySide
- Esempi di livello base di PySide, Hello World, avvisi, inserire un testo, inserire un numero.
- Esempi di livello medio di PySide, dimensionare le finestre, nascondere i widget, i menu popup, la posizione del mouse, gli eventi del mouse.
- Esempi di livello avanzato di PySide, widget etc.
Gli esempi di PySide sono divisi in 3 parti, differenziate per livello di esposizione a PySide, Python e alle parti incorporate in FreeCAD. La prima pagina contiene una panoramica e le basi della materia, fornisce una descrizione di PySide e di come è organizzato, mentre la seconda e la terza pagina contengono soprattutto degli esempi di codice di diversi livelli.
Si ritiene che questi esempi siano utili per iniziare, dopodiché l'utente potrà consultare altre risorse online o la documentazione ufficiale.
Documentazione
Ci sono alcune differenze nella gestione dei widget in Qt4 (PySide) e Qt5 (PySide2). Il programmatore dovrebbe essere consapevole di queste incompatibilità e dovrebbe consultare la documentazione ufficiale se qualcosa non sembra funzionare come previsto su una data piattaforma. Tuttavia, Qt4 è considerato obsoleto, quindi la maggior parte dello sviluppo dovrebbe mirare a Qt5 e Python 3.
La documentazione di PySide fa riferimento alle classi in stile Python; tuttavia, poiché Qt è originariamente una libreria C++, le stesse informazioni dovrebbero essere disponibili nel riferimento C++ corrispondente.
- Moduli Qt disponibile da PySide2 (Qt5).
- Tutte le classi Qt per modulo in Qt5 per C++.
- Moduli Qt disponibile da PySide (Qt4).
![](/images/thumb/8/8f/Power_user_hub.png/24px-Power_user_hub.png)
- 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