更改变量值时的 PyQt 事件

Max*_*ien 6 python variables events signals-slots pyqt4

我有一个变量 t

t = 0

我想在 t 值改变时开始一个事件。如何 ?没有 valuechanged.connect 属性或任何变量...

ekh*_*oro 6

对于全局变量,单独使用赋值是不可能的。但是对于一个属性来说,它非常简单:只需使用一个属性(或者可能__getattr__/__setattr__)。这有效地将赋值转换为函数调用,允许您添加任何您喜欢的附加行为:

class Foo(QWidget):
    valueChanged = pyqtSignal(object)

    def __init__(self, parent=None):
        super(Foo, self).__init__(parent)
        self._t = 0

    @property
    def t(self):
        return self._t

    @t.setter
    def t(self, value):
        self._t = value
        self.valueChanged.emit(value)
Run Code Online (Sandbox Code Playgroud)

现在您可以这样做,foo = Foo(); foo.t = 5并且在值更改后将发出信号。