Frage

Ich bin ein kleines Beispielprogramm zu schreiben, und ich mag den Standard Pyglet des behavioyr von ESC Schließen des App außer Kraft zu setzen. Ich habe etwas im Umfang von:

window = pyglet.window.Window()
@window.event
def on_key_press(symbol, modifiers):
    if symbol == pyglet.window.key.ESCAPE:
        pass

, aber das scheint nicht zu funktionieren.

War es hilfreich?

Lösung

Auf der Google-Gruppe für Pyglet-Benutzer wird überlasten könnte vermuten lassen, die window.Window.on_key_press (), obwohl es kein Codebeispiel davon.

Andere Tipps

Ich weiß, die Frage ist alt, aber nur für den Fall. Du hast pyglet.event.EVENT_HANDLED zurückzukehren Standardverhalten zu verhindern. Ich habe es nicht testen, aber in der Theorie sollte diese Arbeit:

@window.event
def on_key_press(symbol, modifiers):
    if symbol == pyglet.window.key.ESCAPE:
        return pyglet.event.EVENT_HANDLED

Das gleiche gilt für mich. Die Frage ist alt, aber ich habe herausgefunden, dass Sie Fenster Handler Mechanismen verwenden sollten, damit das aktuelle Ereignis machen nicht weiter zu verbreiten.

  

Sie können die verbleibende Ereignis verhindern   Handler in dem Stapel von Empfang   das Ereignis durch einen wahren Wert zurückkehrt.   Die folgende Ereignisbehandlungsroutine, wenn   auf das Fenster geschoben, wird verhindert,   die Escape-Taste, einem Austritt aus den   Programm:

def on_key_press(symbol, modifiers):
    if symbol == key.ESCAPE:
        return True

window.push_handlers(on_key_press)

Hier ist der Link

Es ist einfach wirklich, Unterklasse Fenster und überschreiben die on_key_press, wie folgt aus:

class MyWindow(pyglet.window.Window):  
    def on_key_press(self, symbol, modifiers):  
        if symbol == key.ESCAPE:  
            return pyglet.event.EVENT_HANDLED  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top