2011-12-16 16 views
3

イベントをPythonまたはwxPythonの変数にバインドする方法はありますか?このような何か:Pythonでイベントを変数にバインドする

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

これは表示または、そのような変数の値に応じて非表示にするには、ダイアログを聞かせ。

ありがとうございます!

答えて

3

traitsは、値が変更されたときに通知を受け取ることができます。あなたのケースでは

あなたはpropertyvariable_to_watchを作ることができる:あなたの応答のための

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

+0

形質は非常に有用です... pycon2010で良い(traits talk)がありました(http://python.mirocommunity.org/video/1690/pycon-2010-introduction-to-tra) –

+0

isn 'むしろピジョンソニックではない? –

2

クラスのインスタンスの属性の場合、特定の属性が変更されたときに通知を送信するクラスのカスタム__setattr__()メソッドを記述することで、これを簡単に行うことができます。 (プロパティーを使うこともできますが、属性ごとに別々のプロパティーを作成する必要があります)。変数の場合、これははるかに困難です。 Pythonにはこれを行うためのメカニズムが組み込まれていないので、コードの各行が実行された後に、トレースフックに縛り付けて変数を調べなければなりません。これはあなたのプログラムを大幅に遅くしますが、実行することができます。

+0

感謝を。 – dberenguer

関連する問題