84 lines
6.4 KiB
HTML
84 lines
6.4 KiB
HTML
<html><head><title>PySide Advanced Examples/it</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>PySide Advanced Examples/it</h1></div>
|
|
|
|
<div id="mw-content-text" lang="it" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
|
|
<ul>
|
|
<li class="toclevel-1 tocsection-1"><a href="#Introduzione"><span class="tocnumber">1</span> <span class="toctext">Introduzione</span></a></li>
|
|
<li class="toclevel-1 tocsection-2"><a href="#Creare_un_riferimento_per_la_finestra_principale"><span class="tocnumber">2</span> <span class="toctext">Creare un riferimento per la finestra principale</span></a></li>
|
|
<li class="toclevel-1 tocsection-3"><a href="#Esplorare_gli_elementi_della_finestra_principale"><span class="tocnumber">3</span> <span class="toctext">Esplorare gli elementi della finestra principale</span></a></li>
|
|
<li class="toclevel-1 tocsection-4"><a href="#Aggiungere_manualmente_un_nuovo_widget"><span class="tocnumber">4</span> <span class="toctext">Aggiungere manualmente un nuovo widget</span></a></li>
|
|
<li class="toclevel-1 tocsection-5"><a href="#Aggiungere_un_nuovo_widget_creando_un_oggetto_UI"><span class="tocnumber">5</span> <span class="toctext">Aggiungere un nuovo widget creando un oggetto UI</span></a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h2><span class="mw-headline" id="Introduzione">Introduzione</span></h2>
|
|
<p>Questa pagina contiene degli esempi di livello avanzato di gestione della GUI con <a href="https://www.freecadweb.org/wiki/index.php?title=PySide/it" title="PySide/it">PySide</a>. Gli <a href="https://www.freecadweb.org/wiki/index.php?title=PySide_Beginner_Examples/it" title="PySide Beginner Examples/it">Esempi di base di PySide</a> e gli <a href="https://www.freecadweb.org/wiki/index.php?title=PySide_Medium_Examples/it" title="PySide Medium Examples/it">Esempi di livello medio di PySide</a> sono contenuti nelle rispettive pagine.
|
|
</p><p>Quindi, usando il modulo PySide all'interno di FreeCAD, si ha il controllo completo della sua interfaccia. È possibile ad esempio:
|
|
</p>
|
|
<ul><li> Aggiungere propri pannelli, widget e barre degli strumenti</li>
|
|
<li> Aggiungere o nascondere gli elementi nei pannelli già esistenti</li>
|
|
<li> Modificare, reindirizzare o aggiungere connessioni tra tutti questi elementi</li></ul>
|
|
<h2><span class="mw-headline" id="Creare_un_riferimento_per_la_finestra_principale">Creare un riferimento per la finestra principale</span></h2>
|
|
<p>Se si vuole lavorare sull'interfaccia di FreeCAD, la prima cosa da fare è creare un riferimento alla finestra principale di FreeCAD:
|
|
</p>
|
|
<pre>import sys
|
|
from PySide import QtGui ,QtCore
|
|
app = QtGui.qApp
|
|
mw = FreeCADGui.getMainWindow() </pre>
|
|
<h2><span class="mw-headline" id="Esplorare_gli_elementi_della_finestra_principale">Esplorare gli elementi della finestra principale</span></h2>
|
|
<p>Quindi, è possibile ad esempio esplorare tutti i widget dell'interfaccia:
|
|
</p>
|
|
<pre>for child in mw.children():
|
|
print 'widget name = ', child.objectName(), ', widget type = ', child </pre>
|
|
<p>Di solito, in una interfaccia Qt, i widget sono annidati in widget "contenitori", in questo modo i figli della finestra principale possono contenere altri figli. Secondo il tipo di widget, si possono fare un sacco di cose. Controllare la documentazione delle API per vedere quello che è possibile fare.
|
|
</p>
|
|
<h2><span class="mw-headline" id="Aggiungere_manualmente_un_nuovo_widget">Aggiungere manualmente un nuovo widget</span></h2>
|
|
<p>Per aggiungere un nuovo widget, ad esempio un dockWidget (che può essere posizionato in uno dei pannelli laterali di FreeCAD), fare semplicemente:
|
|
</p>
|
|
<pre>myWidget = QtGui.QDockWidget()
|
|
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget) </pre>
|
|
<p>In seguito, si può continuare e aggiungere altre cose direttamente al proprio widget:
|
|
</p>
|
|
<pre>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(2,50,200,24)) # sets its size
|
|
label.setObjectName("myLabel") # sets its name, so it can be found by name </pre>
|
|
<h2><span class="mw-headline" id="Aggiungere_un_nuovo_widget_creando_un_oggetto_UI">Aggiungere un nuovo widget creando un oggetto UI</span></h2>
|
|
<p>Di solito, il metodo preferito consiste nel creare un oggetto UI (interfaccia utente) che faccia tutta la configurazione del proprio widget in una sola volta. Il grande vantaggio è che tale oggetto dell'interfaccia utente può essere <a href="https://www.freecadweb.org/wiki/index.php?title=Dialog_creation/it" title="Dialog creation/it">creato graficamente</a> con il programma Qt Designer. Un tipico oggetto generato da Qt Designer si presenta come questo:
|
|
</p>
|
|
<pre>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
|
|
|
|
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))
|
|
self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8)) </pre>
|
|
<p>Per usarlo, basta applicarlo al pannello (widget) appena creato in questo modo:
|
|
</p>
|
|
<pre>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 </pre>
|
|
<div style="clear:both"></div>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div><div class="printfooter">
|
|
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=PySide_Advanced_Examples/it&oldid=145767">http://www.freecadweb.org/wiki/index.php?title=PySide_Advanced_Examples/it&oldid=145767</a>"</div>
|
|
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
<div id="mw-navigation">
|
|
<h2>Navigation menu</h2>
|
|
|
|
</body></html> |