在Python中将事件绑定到变量

时间:2011-12-16 06:42:28

标签: python wxpython

有没有办法将事件绑定到Python或wxPython中的变量?像这样:

    self.Bind(EVT_ONCHANGE_VAR, self.mycallback, variable_to_watch)

这将根据此变量的值显示或隐藏对话框。

谢谢!

2 个答案:

答案 0 :(得分:3)

traits可让您在更改值时收到通知。

在您的情况下,您可以variable_to_watch property

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, value):
        self._x = value
        self.show_hide_dialog() # or generate an event in general
    # ...

答案 1 :(得分:2)

如果它是类实例的属性,则可以通过为特定属性更改时发出通知的类编写自定义__setattr__()方法来合理地轻松完成此操作。 (您也可以使用属性,但是您必须为每个属性单独创建一个属性。)对于变量,这要困难得多; Python没有任何内置的机制来执行此操作,因此您必须绑定到跟踪挂钩并在执行每行代码后内省变量。这将显着减慢你的程序,但它可以完成。