Python与Phidgets:如何从对象发送事件/消息到其父级

0 投票
1 回答
520 浏览
提问于 2025-04-16 15:32

我有一个Phidgets步进电机控制器(Stepper类),它允许事件处理程序作为类的方法。

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

这些方法很有用,因为它们可以在步进电机控制器连接或断开与电脑的连接时执行一些任务。

我在Python的wxFrame中创建了一个Stepper对象,想知道如何将这些消息发送到wxFrame,这样它就可以显示控制器是否已连接或断开,而不需要不断地去检查。

或者一般来说,我该如何在Python中从一个对象向父对象发送事件或消息呢?

谢谢!

1 个回答

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..

希望这对你有帮助。代码可能不是特别准确,因为我手边没有参考资料,但即使上面的代码有点偏差,原则还是一样的。

撰写回答