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]…')
 
mNo edit summary
Line 58: Line 58:
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window


{{docnav/de|Pivy/de|Parametrische Objekte erstellen}}
{{docnav/de|Arbeiten mit Pivy|Parametrische Objekte erstellen}}


{{languages | {{en|PyQt}} {{es|PyQt/es}} {{ru|PyQt/ru}} {{se|PyQt/se}} }}
{{languages | {{en|PyQt}} {{es|PyQt/es}} {{ru|PyQt/ru}} {{se|PyQt/se}} }}

Revision as of 15:17, 6 April 2012

PyQt ist ein Python-Modul, das Python-Anwendungen das erstellen, zugreifen und modifizieren von 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.

Durch die Verwendung des PyQt-Modul innerhalb FreeCAD, haben Sie die volle Kontrolle über seine Schnittstelle. Sie, können zum Beispiel:

  • 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

PyQt verfügt über eine umfangreiche API documentation, und es gibt viele Tutorials im Netz, Ihnen beibringen, wie es funktioniert.

Wenn Sie an der FreeCAD-Schnittstelle arbeiten wollen, ist das allererste das Sie tun müssen, schaffen Sie einen Verweis auf das FreeCAD Hauptfenster:

import sys
from PyQt4 import QtGui
app = QtGui.qApp
mw = app.activeWindow()

Dann können Sie zum Beispiel durch alle Widgets der Schnittstelle(Oberfläche) navigieren:

for child in mw.children():
   print 'widget name = ', child.objectName(), ', widget type = ', child

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.

Hinzufügen eines neuen Widget, beispielsweise ein dockWidget(das in einem der FreeCAD-panels angezeigt wird) ist einfach:

myWidget = QtGui.QDockWidget()
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)

Sie könnten dann auch direkt etwas zu Ihrem Widget hinzufügen:

  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

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 grafisch erstellt werden kann. Ein typisches Objekt von Qt Designer generiert, sieht dann wie folgt aus:

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

Um es zu benutzen, brauchen es Sie nur wie folgt, auf Ihr frisch erstelltes Widget anzuwenden:

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
Arbeiten mit Pivy
Parametrische Objekte erstellen
Available translations of this page: Template:Se