PyQt变量值更改时的事件

时间:2017-01-26 03:04:43

标签: python variables events pyqt4 signals-slots

我有一个变量t

t = 0

我想在t值改变时启动一个事件。 怎么样 ?没有valuechanged.connect属性或变量的任何内容......

1 个答案:

答案 0 :(得分:3)

对于全局变量,单独使用赋值是不可能的。但对于属性来说,这很简单:只需使用property(或者__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)

现在你可以foo = Foo(); foo.t = 5,信号将在值发生变化后发出。