スロットル操作を検知する(2) [JMRI]
スロットル定義とリスナーのクラスは一つにまとめることができるようです。
前回のサンプルは下のように書き換えることができます。
import jmri class ThrottleProp(jmri.jmrit.automat.AbstractAutomaton, java.beans.PropertyChangeListener):......(1) def init(self): global throttle throttle = self.getThrottle(301, True) if throttle == None : print "Couldn't assign throttle!" throttle.propertyChange = self.throttleEvent......(2) return def handle(self): return False def throttleEvent(self, event):......(3) print "propertyname:", event.propertyName print "oldvalue:", event.oldValue print "newvalue:", event.newValue ThrottleProp().start()
AbstractAutomatonとPropertyChangeListenerを多重継承した(1)クラスに処理を記述していきます。
initメソッド中のリスナークラスのインスタンス生成とthrottleオブジェクトにアタッチする部分を(2)のように書き換えます。ここでpropertyChange属性に代入したthrottleListenerメソッド(3)にリスナー反応時の処理を記述していきます。
リスナーの処理を他のクラスで使い回さなければ、こちらの方がシンプルで良さげですね。
コメント 0