Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Использование горячих клавиш RegisterHotKey... [RSS Feed]

#1 Ноя. 17, 2008 14:55:53

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование горячих клавиш RegisterHotKey...

Зарегистрировал горячие клавиши F1-F6 под некоторые команды отправки в порт.
Использовал функцию self.RegisterHotKey(101,wx.MOD_NONE,win32con.VK_F1)
При работе перевожу фокус например на тотал командер тама горячие клавиши не работают, получается exe на питоне пока не закрою горячие клавиши тока в нем работают.
Это так устроено, или можно как то настроить по другому, что горячие клавиши работали тока в питон при наличие у его exe фокуса.



Офлайн

#2 Ноя. 17, 2008 22:14:41

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Использование горячих клавиш RegisterHotKey...

Я конечно не работал с wx, но хоткеи обычно всегда имеют глобальный статус, а вот шорткаты (клавиатурные сокращения), только для окна приложения в фокусе. Могу предложить два варианта:
1 отрубать хоткеи, если приложение теряет фокус
2 использовать bind для событий, происходящих в окне приложения, на события “нажатие клавиши Fx”.
Пример для wx привести не могу, к сожалению. Но думаю мысль моя будет ясна, и с реализацией проблем не будет :)



Отредактировано (Ноя. 17, 2008 22:16:26)

Офлайн

#3 Ноя. 18, 2008 10:07:38

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование горячих клавиш RegisterHotKey...

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)



Офлайн

#4 Ноя. 18, 2008 12:47:03

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование горячих клавиш RegisterHotKey...

wx.AcceleratorTable() я так понял можно привязать только к wx.EVT_BUTTON или wx.EVT_MENU
т.е. они дублируют события привязанные ранее к кнопке или ID какого либо пункта меню…
Я же использую self.Bind(wx.EVT_HOTKEY, self.handleHotKey6, id=106) такое событие которое прописано в wxPython для функции RegisterHotKey()
Может я не ясно выражаюсь но имеется ввиду что по горячим клавишам я не дублирую какие то функции котороые уже работают у меня по кнопкам в GUI, а имеенно независимые функции которые привязаны к событию EVT_HOTKEY, поэтому наверное лучше при смене фокуса приложения просто отрубать регитсрацию HOTKEY в винде.



Офлайн

  • Начало
  • » GUI
  • » Использование горячих клавиш RegisterHotKey...[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version