2011-12-16 41 views
3

是否有任何方法將事件綁定到Python或wxPython中的變量?類似這樣的:將事件綁定到Python中的變量

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

這將讓對話顯示或隱藏取決於這樣的變量的值。

謝謝!

回答

3

traits允許您在更改值時收到通知。

你的情況,你可以做一個variable_to_watchproperty

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 
    # ... 
+0

非常有趣的特質 – dberenguer 2011-12-16 09:24:07

2

如果它是類實例的屬性,可以通過爲特定屬性更改時發出通知的類編寫自定義__setattr__()方法來合理輕鬆地完成此操作。 (你也可以使用一個屬性,但是你必須爲每個屬性製作一個單獨的屬性。)對於變量來說,這是非常困難的; Python沒有任何內置機制來執行此操作,因此您必須綁定到跟蹤掛鉤並在每行代碼執行後反省該變量。這會顯着減慢你的程序,但可以完成。

+0

感謝您的答覆。 – dberenguer 2011-12-16 09:47:38