Форум сайта python.su
Зарегистрировал горячие клавиши F1-F6 под некоторые команды отправки в порт.
Использовал функцию self.RegisterHotKey(101,wx.MOD_NONE,win32con.VK_F1)
При работе перевожу фокус например на тотал командер тама горячие клавиши не работают, получается exe на питоне пока не закрою горячие клавиши тока в нем работают.
Это так устроено, или можно как то настроить по другому, что горячие клавиши работали тока в питон при наличие у его exe фокуса.
Офлайн
Я конечно не работал с wx, но хоткеи обычно всегда имеют глобальный статус, а вот шорткаты (клавиатурные сокращения), только для окна приложения в фокусе. Могу предложить два варианта:
1 отрубать хоткеи, если приложение теряет фокус
2 использовать bind для событий, происходящих в окне приложения, на события “нажатие клавиши Fx”.
Пример для wx привести не могу, к сожалению. Но думаю мысль моя будет ясна, и с реализацией проблем не будет :)
Отредактировано (Ноя. 17, 2008 22:16:26)
Офлайн
Vad, попробуй через wx.AcceleratorTable
accelerators = wx.AcceleratorTable([
(wx.ACCEL_CTRL, wx.WXK_RETURN, self.ID_OK.GetId()),
(wx.ACCEL_NORMAL, wx.WXK_ESCAPE,self.ID_CANCEL.GetId())])
self.SetAcceleratorTable(accelerators)
Офлайн
wx.AcceleratorTable() я так понял можно привязать только к wx.EVT_BUTTON или wx.EVT_MENU
т.е. они дублируют события привязанные ранее к кнопке или ID какого либо пункта меню…
Я же использую self.Bind(wx.EVT_HOTKEY, self.handleHotKey6, id=106) такое событие которое прописано в wxPython для функции RegisterHotKey()
Может я не ясно выражаюсь но имеется ввиду что по горячим клавишам я не дублирую какие то функции котороые уже работают у меня по кнопкам в GUI, а имеенно независимые функции которые привязаны к событию EVT_HOTKEY, поэтому наверное лучше при смене фокуса приложения просто отрубать регитсрацию HOTKEY в винде.
Офлайн