Как зарегистрировать несколько триггеров KeyEvent в wxPython - PullRequest
2 голосов
/ 16 августа 2011

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

[клавиша «a» нажата и удерживается] [клавиша «b» нажата и удерживается] [клавиша «b» отпущена] [клавиша «a» отпущена]

aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaa

Кажется, я не могу найти способ вручную вызвать подобное событие, я пытался использовать wx.PostEvent, но либо использую его неправильно, либо это не то, что мне нужно, поскольку технически событие key_down не сработало, когда должна регистрироваться вторая группа 'a, и я не могу выяснить, как вызвать событие key_down с определенным значением.

Ответы [ 3 ]

3 голосов
/ 16 августа 2011

Одним из вариантов в подобных случаях является опрос состояния ключа в цикле. Если нажата клавиша «а», то назовите ваше действие

2 голосов
/ 16 августа 2011

Если вы хотите перехватить многоключевые события, у вас есть два варианта. Вы можете поймать EVT_CHAR или создать таблицу ускорителей. Вот статья, в которой я попытался объяснить, как работает EVT_CHAR: http://www.blog.pythonlibrary.org/2009/08/29/wxpython-catching-key-and-char-events/

Вот еще одна статья о таблицах ускорителей: http://www.blog.pythonlibrary.org/2010/12/02/wxpython-keyboard-shortcuts-accelerators/

С первым вы можете «записать» то, что было нажато. Я не знаю, почему вы хотите это сделать. Я не думаю, что wxPython предоставляет способ воспроизведения нажатых клавиш. В Windows есть сторонний модуль под названием SendKeys, который вы можете использовать для этого: http://www.rutherfurd.net/python/sendkeys/

Если ничего из этого не помогло, обратитесь в официальный список рассылки wxPython / в Google Group. Эти ребята, вероятно, могут помочь вам.

0 голосов
/ 16 августа 2011

Поймать события вверх / вниз и действовать соответственно http://docs.wxwidgets.org/2.8/wx_wxkeyevent.html http://www.wxpython.org/docs/api/wx.KeyEvent-class.html

...