Frage

Ich fragte vor kurzem diese Frage in der Pyglet-Benutzer-Gruppe, bekam aber Antwort, so versuche ich, hier statt.

Ich möchte Pyglet erweitern zu können, ein Infrarot-Eingabegerät von lirc unterstützt verwenden. Ich habe pyLirc vor ( http://pylirc.mccabe.nu/ ) mit PyGame verwendet und ich möchte meine Anwendung neu zu schreiben anstatt Pyglet zu verwenden.

Um zu sehen, ob eine Taste gedrückt wurde, Sie in der Regel pyLirc abfragen würden, um zu sehen, ob es irgendwelche Taste drückt in seiner Warteschlange ist.

Meine Frage ist, was ist der richtige Weg in Pyglet zu pyLirc integrieren?

Ich würde es vorziehen, wenn es funktioniert in der gleichen wie die aktuelle Fenster-Tastatur / Maus-Ereignisse war, aber ich bin nicht sicher, wo ich anfangen soll.

Ich weiß, dass ich einen neuen Eventdispatcher schaffen, in dem ich ich registriere die neue Arten von Veranstaltungen und versenden sie nach dem Abruf, etwa so:

class pyLircDispatcher(pyglet.event.EventDispatcher):
    def poll(self):
        codes = pylirc.nextcode()
        if codes is not None:
            for code in codes:
                self.dispatch_event('on_irbutton', code)

    def on_irbutton(self, code):
        pass

Aber wie integriere ich, dass in die Hauptschleife der Anwendung beim Aufruf poll () zu halten, wenn ich pyglet.app.run () verwenden und wie lege ich diesen Eventdispatcher an mein Fenster so funktioniert es das gleiches wie die Maus und Tastatur Disponenten?

Ich sehe, dass ich einen Scheduler einrichten kann poll () in regelmäßigen Abständen mit pyglet.clock.schedule_interval nennen, aber dann ist dies der richtige Weg, es zu tun?

War es hilfreich?

Lösung

Es ist wahrscheinlich zu spät für den OP, aber ich werde auf jeden Fall für den Fall, antworten sie nützlich ist, um alle anderen.

den Event-Dispatcher Erstellen und Verwenden von pyglet.clock.schedule_interval Umfrage () aufzurufen, in regelmäßigen Abständen ist ein guter Weg, es zu tun.

Um den Event-Dispatcher zu Ihrem Fenster zu anbringen, müssen Sie eine Instanz des Dispatcher erstellen und rufen Sie dann seine push_handlers Methode:

dispatcher.push_handlers(window)

Dann können Sie die Ereignisse behandeln, genauso wie alle anderen Ereignisse in das Fenster kommen.

Andere Tipps

Der richtige Weg ist, was funktioniert. Sie können es jederzeit wieder ändern, wenn Sie einen besseren Weg finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top