Qt for Python UsingQtProperties

From Qt Wiki
Revision as of 09:03, 24 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search


English 한국어

Using Qt Properties in PySide

PySide provides a <code&gt;Property&lt;/code&gt; function which allows for declaring properties that simultaneously behave both as Qt and Python properties, and have their setters and getters defined as Python functions.

A short example illustrating defining and accessing a Qt property from Python is given below:

<br />from PySide.QtCore import QObject, Property

class MyObject(QObject):<br /> def ''init''(self,startval=42):<br /> QObject.''init''(self)<br /> self.ppval = startval

def readPP(self):<br /> return self.ppval

def setPP(self,val):<br /> self.ppval = val

pp = Property(int, readPP, setPP)

obj = MyObject()<br />obj.pp = 47<br />print (obj.pp)<br />

The complete specification for PySide's property system is given in "PSEP 103&quot;:http://web.archive.org/web/20120423210319/http://www.pyside.org/docs/pseps/psep-0103.html.

Properties in QML expressions

If you are using properties of your objects in QML expressions, QML requires the property to be NOTIFYable. This can be done using a simple signal:

<br />class Person(QtCore.QObject):<br /> def ''init''(self, name):<br /> QtCore.QObject.''init''(self)<br /> self._person_name = name

def _name(self):<br /> return self._person_name

&amp;#64;QtCore.Signal<br /> def name_changed(self): pass

name = QtCore.Property(unicode, _name, notify=name_changed)<br />