Qt for Python UsingQtProperties: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Decode HTML entity numbers)
No edit summary
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 


[[Category:LanguageBindings::PySide]]
[[Category:LanguageBindings::PySide]]
Line 6: Line 6:
'''English''' [[:Using_Qt_Properties_in_PySide_Korean|한국어]]
'''English''' [[:Using_Qt_Properties_in_PySide_Korean|한국어]]


= Using Qt Properties in PySide =
 


PySide provides a <code>Property</code> 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.
PySide provides a <code>Property</code> 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.

Revision as of 08:35, 26 March 2015


English 한국어


PySide provides a

Property

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:

from PySide.QtCore import QObject, Property

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

def readPP(self):
 return self.ppval

def setPP(self,val):
 self.ppval = val

pp = Property(int, readPP, setPP)

obj = MyObject()
obj.pp = 47
print (obj.pp)

The complete specification for PySide's property system is given in PSEP 103.

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:

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

def _name(self):
 return self._person_name

@QtCore.Signal
 def name_changed(self): pass

name = QtCore.Property(unicode, _name, notify=name_changed)