2011-04-12 29 views
0

我有一個Phidg​​ets的步進控制器(步進類),它允許事件處理程序是類的方法:Python和Phidg​​ets的:希望從對象發送事件/消息到它的父

self.setOnAttachHandler(self.StepperAttached) 
self.setOnDetachHandler(self.StepperDetached) 

這些是有用因爲他們可以在步進控制器與PC連接/分離時執行任務。

我已經在Python中的wxFrame中創建了一個Stepper對象,並想知道如何將這些消息發送到wxFrame,以便它可以例如指示控制器未經輪詢連接/脫附。

或者一般情況下,如何在Python中將對象的事件/消息發送給父項?

謝謝!

回答

1

執行此操作的規範方法是將父對象的引用傳遞給子對象。

from Phidgets.Devices.Stepper import Stepper 

class Parent(object): 
    "Parent Class" 

    def stepperAttached(self, event): 
     print 'Connected to device ', event.device.getSerialNum() 

    def eventHandler (self, event): 
     print "Event fired!", event.state 

class Child(object): 
    "Child class" 

    def __init__(self, parent): 
     self.parent = parent 
     self.stepper = Stepper() 
     self.stepper.setOnAttachHandler(self.parent.StepperAttached) 
     self.stepper.setOnInputChangedHandler(self.parent.eventHandler) 

p = Parent() 
c = Child(p) 
c2 = Child(p) 
# etc.. 

希望這會有所幫助。代碼可能不太準確,因爲我沒有可用的參考,但即使上面的代碼稍微關閉,主體也是一樣的。