Фокус следует за мышью в wxPython?

Я разрабатываю приложение, которое содержит несколько панелей. См. скриншот:

скриншот

  • Левая панель настроек представляет собой wx.ScrolledPanel, содержащую число wx.Panels.
  • Верхняя панель событий представляет собой wx.grid.Grid.
  • Нижняя панель данных представляет собой wx.Panel, содержащую wx.grid.Grid.
  • Средняя панель сюжет представляет собой wx.Panel, содержащую мысленный график чако.
  • Правая панель детектор представляет собой wx.Panel.

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

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

В настоящее время я определил функцию:

def focusFollowsMouse(window):
    window.Bind(wx.EVT_ENTER_WINDOW, lambda event: window.SetFocus())

Я хотел бы применить эту функцию только к четырем панелям верхнего уровня: график, настройки, события и данные.

Однако мне нужно вызвать эту функцию для каждой подпанели или элемента управления в каждой из панелей верхнего уровня, чтобы заставить это работать. Например, мне нужно применить эту функцию отдельно к панелям Настройки измерения, Параметры анализа, Настройки просмотра и т. д.

Скорее всего, событие EVT_ENTER_WINDOW не распространяется на родительские окна.

Есть ли способ заставить это работать, не применяя focusFollowsMouse к каждой подпанели или элементу управления?

Спасибо


person Bas van Dijk    schedule 24.09.2010    source источник
comment
Мне нравится фокус-следует-мышь для моей оконной среды, но то, что это происходит в приложении, использующем традиционный набор виджетов, кажется неожиданным и нелогичным.   -  person llasram    schedule 24.09.2010
comment
В целом согласен, однако в этом приложении пользователю часто приходится переключаться между панелью настроек и сюжетом. Меня немного раздражает постоянно нажимать на график, прежде чем можно будет масштабировать. Обратите внимание, однако, что я еще не провел никаких тестов на удобство использования. Так что может быть дело только в том, что я ошибаюсь.   -  person Bas van Dijk    schedule 24.09.2010
comment
Это поведение Windows - оно работает так, как вы ожидаете, в GTK. Лично я бы оставил ваше приложение как есть для совместимости с другими приложениями Windows и установил WizMouse: antibody-software.com/web/software/software/   -  person Steven Sproat    schedule 24.09.2010
comment
Спасибо за совет. Я обязательно попробую WizMouse.   -  person Bas van Dijk    schedule 24.09.2010
comment
@ Стивен, если вы поместите свой комментарий в ответ, за него можно будет проголосовать, а затем этот вопрос можно будет удалить со страницы без ответа. Что и должно быть, поскольку на него действительно был дан ответ.   -  person LarsH    schedule 30.09.2010


Ответы (1)


Это поведение Windows - оно работает так, как вы ожидаете, в GTK. Лично я бы оставил ваше приложение как есть для совместимости с другими приложениями Windows и установил WizMouse

person Steven Sproat    schedule 30.09.2010