Пиглет, как заставить ключ ESCAPE не закрывать окно? - PullRequest
9 голосов
/ 22 марта 2010

Я пишу небольшую примерную программу и хочу переопределить поведение Pyglet по умолчанию ESC, закрывающее приложение. У меня есть что-то в размере:

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

но это, похоже, не работает.

Ответы [ 4 ]

17 голосов
/ 08 июля 2010

Я знаю, что вопрос старый, но на всякий случай. Вы должны вернуть pyglet.event.EVENT_HANDLED, чтобы предотвратить поведение по умолчанию. Я не проверял это, но теоретически это должно работать:

@window.event
def on_key_press(symbol, modifiers):
    if symbol == pyglet.window.key.ESCAPE:
        return pyglet.event.EVENT_HANDLED
4 голосов
/ 14 октября 2010

То же самое для меня. Вопрос старый, но я обнаружил, что вы должны использовать механизмы обработчиков окон, чтобы текущее событие не распространялось дальше.

Вы можете предотвратить оставшееся событие обработчики в стеке от получения событие, возвращая истинное значение. Следующий обработчик события, когда толкнул на окно, предотвратит ключ выхода от выхода Программа:

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

window.push_handlers(on_key_press)

Вот эта ссылка

1 голос
/ 09 декабря 2012

На самом деле все просто, создайте подкласс Window и переведите его в on_key_press, например:

class MyWindow(pyglet.window.Window):  
    def on_key_press(self, symbol, modifiers):  
        if symbol == key.ESCAPE:  
            return pyglet.event.EVENT_HANDLED  
1 голос
/ 23 марта 2010

В группе Google для pyglet-users рекомендуется перегрузить window.Window.on_key_press (), хотя нет примера кода.

...