2010-09-24 4 views
14

Je développe une application qui contient un certain nombre de volets. Voir la screenshot:Focus-suit-souris dans wxPython?

screenshot

  • La gauche paramètres volet est un wx.ScrolledPanel qui contient un certain nombre de wx.Panels.
  • Le premier événements est un wx.grid.Grid.
  • Le volet de données est un wx.Panel qui contient un wx.grid.Grid.
  • Le volet du graphique est un wx.Panel contenant un graphique enthought chaco.
  • Le volet droit du détecteur est un wx.Panel.

Je voudrais mettre en œuvre focus suit la souris de sorte que lorsque je déplace ma souris sur la parcelle que je peux immédiatement un zoom avant ou à l'aide de ma molette de défilement sans d'abord en cliquant sur le terrain pour lui donner le focus.

De même quand je déplace ma souris sur les paramètres gauche, les événements majeurs ou les bas données volets Je voudrais pouvoir faire défiler immédiatement la fenêtre en utilisant la molette de défilement sans d'abord cliquer sur la fenêtre .

Actuellement je défini une fonction:

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

Je voudrais appliquer cette fonction que sur les quatre volets de haut niveau: terrain, paramètres, événements et données.

Cependant, j'ai besoin d'appeler cette fonction pour chaque sous-panneau ou contrôle dans chacun des volets de haut niveau pour que cela fonctionne. Par exemple, j'ai besoin d'appliquer cette fonction individuellement à la Paramètres de mesure, Paramètres d'analyse, Voir les paramètres etc.

Il est très probable que l'événement EVT_ENTER_WINDOW ne soit pas propagé aux fenêtres parentes.

Existe-t-il un moyen de faire fonctionner ceci sans appliquer focusFollowsMouse à chaque sous-panneau ou contrôle?

Merci

+4

J'aime focus-follows-mouse pour mon environnement de fenêtrage, mais le faire dans une application en utilisant un ensemble de widgets traditionnels semble inattendu et contre-intuitif. – llasram

+0

Je suis d'accord en général, mais dans cette application, un utilisateur a souvent besoin de basculer entre le panneau de paramètres et l'intrigue. Je trouve ça légèrement irritant de cliquer en continu sur l'intrigue avant de pouvoir zoomer. Notez cependant que je n'ai encore effectué aucun test d'utilisabilité. Donc, ça peut juste être le cas que je me trompe. –

+2

Ceci est le comportement de Windows - il fonctionne comme prévu sous GTK. Personnellement, je laisserais votre application telle quelle, par souci de cohérence avec les autres applications Windows, et j'installerai WizMouse: http://antibody-software.com/web/software/software/wizmouse-makes-your-mouse-wheel-work -on-the-window-under-the-mouse/ –

Répondre

1

Ceci est le comportement de Windows - il fonctionne comme prévu sous GTK.Personnellement, je laisse votre application telle quelle, pour la cohérence avec d'autres applications Windows, et j'installe