2010-03-22 1 views
9

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

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

но это не работает.

ответ

1

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

17

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

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

Я тестировал его, он работает. – Shavais

+0

Это должен быть принятый ответ, потому что он фактически отвечает на вопрос. –

4

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

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

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

window.push_handlers(on_key_press) 

Вот что link

+0

+1 для ссылки на документы – henrebotha

1

Это просто на самом деле, подкласс окна и overide on_key_press, вот так:

class MyWindow(pyglet.window.Window): 
    def on_key_press(self, symbol, modifiers): 
     if symbol == key.ESCAPE: 
      return pyglet.event.EVENT_HANDLED