[PyQt] Use pyqtProperty on QObject instance
    Phil Thompson 
    phil at riverbankcomputing.com
       
    Mon May 27 17:11:06 BST 2019
    
    
  
On 27/05/2019 16:33, Patrick Stinson wrote:
> I have a custom object property system that adds properties to QObject
> instances and am trying to expose those [dynamic] properties to qml.
> 
> Is it possible to add a qt property to a QObject instance, as opposed
> to adding it using pyqtProperty as a decorator in the class
> declaration?
> 
> The PyQt5 docs say that you can use pyqtProperty in the same way as
> the python property() function apart from the decorator, but I haven’t
> had much success with this:
> 
> 
> def test_property():
>     class A(QObject):
>         def __init__(self):
>             self._mine = 12
>             self.mine = pyqtProperty(int, self.get_mine, self.set_mine)
>         def get_mine(self):
>             return self._mine
>         def set_mine(self, x):
>             self._mine = x
> 
>     a = A()
>     print(a.mine)
>     print(a.mine())
> 
> 
> 
> turin:pkdiagram patrick$ python test.py
> <PyQt5.QtCore.pyqtProperty object at 0x114ea1840>
> Traceback (most recent call last):
>   File "test.py", line 743, in <module>
>     test_property()
>   File "test.py", line 740, in test_property
>     print(a.mine())
> TypeError: Required argument 'fget' (pos 1) not found
> turin:pkdiagram patrick$
Properties are class objects not instance objects.
Phil
    
    
More information about the PyQt
mailing list