PyQt变量值改变时的事件

8

我有一个变量t

t = 0

当t的值发生变化时,我想启动一个事件。怎么办?对于变量,没有valuechanged.connect属性或任何其他属性...

1个回答

11
对于全局变量而言,仅使用赋值是不可能实现的。但对于属性,这相当简单:只需使用一个属性(或者也许__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,当值发生改变后信号就会被发送出去。

您对我在使用列表时修改答案的建议如何?请参见https://stackoverflow.com/q/61695982/8928024。 - ZF007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接