Python и Phidgets: хотите отправить событие / сообщение от объекта его родителю - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть шаговый контроллер Phidgets (класс Stepper), и он позволяет обработчикам событий быть методами класса:

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

Они полезны, поскольку они могут выполнять задачи, когда контроллер шагового контроллера подключен / отсоединенс компьютера.

Я создал объект Stepper в wxFrame на Python и хотел бы знать, как отправлять эти сообщения в wxFrame, чтобы он мог, например, указать, что контроллер был подключен /отключено без опроса.

Или вообще, как я могу отправлять события / сообщения от объекта к родителю в Python?

Спасибо!

1 Ответ

1 голос
/ 01 июня 2011

Канонический способ сделать это - передать ссылку на родительский объект в дочерние элементы.

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

Надеюсь, это поможет. Код может быть не совсем точным, так как у меня нет удобной ссылки, но основной принцип тот же, даже если приведенный выше код немного не в порядке.

...