2010-09-24 49 views
14

Estoy desarrollando una aplicación que contiene varios paneles. Ver la screenshot:Focus-follows-mouse en wxPython?

screenshot

  • La configuración panel izquierdo es un wx.ScrolledPanel que contiene una serie de wx.Panels.
  • El panel superior de eventos es un wx.grid.Grid.
  • La parte inferior panel de datos es un wx.Panel que contiene un wx.grid.Grid.
  • El medio parcela panel es un wx.Panel que contiene un diagrama de enthought chaco.
  • La derecha detector panel es un wx.Panel.

me gustaría poner en práctica foco sigue al ratón para que cuando muevo el ratón sobre la trama puedo enfocar inmediatamente adentro o hacia afuera usando mi rueda de desplazamiento sin primero clic en la trama para darle el foco.

Del mismo modo, cuando muevo el ratón sobre los configuración izquierda, los principales eventos o los datos de abajo paneles Me gustaría ser capaz de desplazarse de inmediato la ventana utilizando la rueda de desplazamiento sin primero clic en la ventana .

Actualmente he definido una función:

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

quisiera aplicar esta función sólo en los cuatro paneles de nivel superior: trama, configuración, eventos y de datos.

Sin embargo, necesito llamar a esta función para cada subpanel o control en cada uno de los paneles de nivel superior para que esto funcione. Por ejemplo, necesito aplicar esta función individualmente a Configuración de medición, Parámetros de análisis, Ver configuraciones etc. paneles.

Lo más probable es que el evento EVT_ENTER_WINDOW no se propague a las ventanas primarias.

¿Hay alguna manera de hacer que esto funcione sin aplicar focusFollowsMouse a todos y cada subpanel o control?

Gracias

+4

Me gusta el enfoque-sigue-mouse para mi entorno de ventanas, pero que suceda dentro de una aplicación usando un conjunto de artilugios tradicional parece inesperado y contra-intuitivo. – llasram

+0

Estoy de acuerdo en general, sin embargo, en esta aplicación un usuario a menudo necesita cambiar entre el panel de configuraciones y el gráfico. Me resulta un poco irritante hacer clic continuamente en la trama antes de poder hacer zoom. Sin embargo, tenga en cuenta que aún no he realizado ninguna prueba de usabilidad. Entonces puede ser el caso de que estoy equivocado. –

+2

Este es el comportamiento de Windows: funciona como espera bajo GTK. Personalmente, dejo tu aplicación tal como está, para mantener la coherencia con otras aplicaciones de Windows e instalo WizMouse: http://antibody-software.com/web/software/software/wizmouse-makes-your-mouse-wheel-work -on-the-window-under-the-mouse/ –

Respuesta

1

Este es el comportamiento de Windows' - que funciona como se espera en virtud de GTK.Personalmente, dejaría la aplicación tal como está, para mantener la coherencia con otras aplicaciones de Windows e instalar WizMouse