我为编写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
的构造函数。有什么方法可以避免代码重复?