避免PySide2中属性的代码重复

时间:2018-07-25 14:49:12

标签: python qml pyside2 python-descriptors

我为编写Properties的{​​{1}}编写相同的代码而感到厌倦:

PySide2

有什么方法可以和class BackEnd(QObject): my_prop_updated = Signal() @Property(bool) def my_prop(self): print('getter invoked')) return self._my_prop @my_prop.setter def set_my_prop(self, value): print('setter invoked') self._my_prop = value self.my_prop_updated.emit() def __init__(self): super().__init__() self._my_prop = None 一起使用python描述符吗?像这样:

Properties

它给我一个错误:

class QTPropBool(Property):
    my_prop_updated = Signal()

    def my_getter(self, obj):
        print('getter invoked')
        return self._my_prop

    def my_setter(self, obj, value):
        print('setter invoked')
        self._my_prop = value
        self.my_prop_updated.emit()

    def __init__(self):
        super().__init__(bool, self.my_getter, self.my_setter, notify=self.my_prop_updated)


class BackEnd(QObject):
    my_prop = QTPropBool()

可能是因为它是AttributeError: 'PySide2.QtCore.Signal' object has no attribute 'emit' 类,而不是Property类,并且我不是在调用QObject的构造函数。有什么方法可以避免代码重复?

0 个答案:

没有答案