Pyglet, wie man die Escape-Taste nicht das Fenster schließen?
-
21-09-2019 - |
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.
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