Я разрабатываю приложение, которое содержит несколько панелей. Смотрите screenshot:Focus-follow-mouse в wxPython?
- Левое настройки панели является
wx.ScrolledPanel
, который содержит рядwx.Panels
. - Верх события pane is
wx.grid.Grid
. - Дно данные pane является
wx.Panel
, который содержитwx.grid.Grid
. - Средние участок панель
wx.Panel
содержит участок enthought chaco. - Право Детектор pane is
wx.Panel
.
Я хотел бы реализовать фокус следует мыши так, что когда я двигаю мышь над сюжетом я могу сразу увеличивать или уменьшать масштаб, используя мое колесо прокрутки без первого щелчка на участке, чтобы дать ему фокус.
Точно так же, когда я двигаю мышь над левыми настройкой, верхние событие или нижние данные стекла Я хотел бы, чтобы иметь возможность немедленно прокручивать окно, используя колесо прокрутки без первого щелчка на окне ,
В настоящее время я определил функцию:
def focusFollowsMouse(window):
window.Bind(wx.EVT_ENTER_WINDOW, lambda event: window.SetFocus())
Я хотел бы применить эту функцию только на четырех панелях верхнего уровня: участок, настройки, события и данных.
Однако мне нужно вызвать эту функцию для каждой панели или элемента управления в каждой из верхних панелей верхнего уровня, чтобы заставить это работать. Например, мне нужно применить эту функцию по отдельности к . Параметры измерения, Параметры анализа, Просмотреть настройки и т. Д. Панели.
Скорее всего, событие EVT_ENTER_WINDOW
не распространяется на родительские окна.
Есть ли способ заставить это работать без применения focusFollowsMouse
к каждой под-панели или к управлению?
Благодаря
Мне нравится фокус-мышкой для моей среды окон, но если это произойдет в приложении с использованием традиционного набора виджета, неожиданным и противоречивым. – llasram
Я согласен в целом, однако в этом приложении пользователю часто приходится переключаться между панелью настроек и графиком. Я немного раздражаю, чтобы непрерывно щелкнуть по сюжету, прежде чем можно увеличить. Обратите внимание, что я еще не прошел проверку юзабилити. Так что я могу ошибаться. –
Это поведение Windows - оно работает так, как вы ожидаете в GTK. Лично я оставил ваше приложение таким, какое оно есть, для обеспечения совместимости с другими приложениями Windows и установкой WizMouse: http://antibody-software.com/web/software/software/wizmouse-makes-your-mouse-wheel-work -on-the-window-under-the-mouse/ –