Re: Use pyqtProperty on QObject instance
Phil Thompson <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
On 27/05/2019 17:41, Patrick Stinson wrote: > Ok, that answers my question. I will figure out a way to add the > properties to the class the first time they are added to one of the > instances. They are always the same, after all. Properties (like signals) are part of the class *definition* (as far as Qt is concerned). You can't add them dynamically. Phil >> On May 27, 2019, at 9:11 AM, Phil Thompson >> <[email protected]> wrote: >> >>> 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 _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt