Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wxPython генерация нажатия клавиш клавиатуры 
:(
    Опции темы
StYoDa
Дата 20.2.2011, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2011

Репутация: нет
Всего: нет



Всем привет. Программирую на питоне пол года... Пишу серьезное торговое приложение для рабочего места кассира. Необходимо добавить модуль для возможности работы с Touch screen-ом. Для этого сделал отдельные панели для функционала и виртуальную клавиатуру. Встала проблема с генерацией нажатий клавиш на клавиатуре. Заранее говорю, что приложение работает под платформой Linux Ubuntu 10.04, соответственно найденный модуль python SendKeys не подходит, так работает под винду. Для генерации нажатия я написал следующую функцию:
Код

    def _send_key_event(self):
        cmd = wx.KeyEvent(wx.EVT_CHAR.evtType[0])
        cmd.m_keyCode = self._char_value
        cmd.SetEventObject(self._focus_object)
        self._focus_object.GetEventHandler().ProcessEvent(cmd)
        self._focus_object.EmulateKeyPress(cmd)


В частности я здесь генерю евент типа wx.KeyEvent для объекта self._focus_object, который на момент генерации мне уже известен(обычно это wx.TextCtrl, для других не работает). Событие генерируется, но содежимое контрола не меняется, поэтому приходится еще сверху вызывать функцию EmulateKeyPress, которая добавляет нужный символ в контрол, но EmulateKeyPress не перехватавается в событии wx.EVT_CHAR, и маски для ввода, которые я написал для различных полей для ввода, не работают. События табуляции, клавиши вверх-вниз тоже не работают
Вопрос, есть ли возможность в линуксе глобально сгенерировать "полноценное" нажатие клавиши на клавиатуре, например как в Delphi keybd_event, либо просто хотя бы обходиться без функции EmulateKeyPress? Заранее спасибо за помощь.
PM MAIL   Вверх
StYoDa
Дата 24.2.2011, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2011

Репутация: нет
Всего: нет



Да, видимо никто не сталкивался с такой проблемой,.. в общем я кое-что нашел. В питоне стандартом есть либа python-virtkey, документации к сожалению как таковой нет, но все же сгенерить нажатия мне удалось
Код

    def _send_key_event(self):
        emulator = virtkey.virtkey()
        emulator.press_keysym(self._char_value)
        emulator.release_keysym(self._char_value)
 
Правда с вводом русских символов возникли проблемы, но думаю это решаемо...
В общем описании вычитал, что можно также как-то переключать раскладку (рус/англ), но пока еще мне это не удалось. Если кто знает подскажите плз

Добавлено через 6 минут и 29 секунд
Да, видимо никто не сталкивался с такой проблемой,.. в общем я кое-что нашел. В питоне стандартом есть либа python-virtkey, документации к сожалению как таковой нет, но все же сгенерить нажатия мне удалось
Код

    def _send_key_event(self):
        emulator = virtkey.virtkey()
        emulator.press_keysym(self._char_value)
        emulator.release_keysym(self._char_value)
 
Правда с вводом русских символов возникли проблемы, но думаю это решаемо...
В общем описании вычитал, что можно также как-то переключать раскладку (рус/англ), но пока еще мне это не удалось. Если кто знает подскажите плз
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.