Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jean-michel bain-cornu
Bonsoir,
Dans une fenêtre avec pas mal de widgets, comment gere t'on le focus ( ordre de passage avec la touche tab) ? Le focus est donné en automatique suivant l'ordre de création des objets
dans la fenêtre, ce qui convient généralement. De plus, il faut que la fenêtre aie le style wx.TAB_TRAVERSAL Exemple : frame= wx.Frame(parent,wx.ID_ANY,'titre',pos=wx.Point(10,10),size=wx.Size(950,500), style=wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL|wx.FRAME_TOOL_WINDOW)
Mais ça peut ne pas suffire. On peut vouloir gérer plus finement lorsque qu'on a des 'super' objets comme des tree, des grids ou des notebooks. Dans ce cas, le mieux est de gérer un évènement wx.EVT_NAVIGATION_KEY qui donnera l'objet en cours et la direction souhaitée (haut ou bas) et de décider soi-même où l'on veut mettre le focus. Enfin, il est préférable de donner le focus dans un évènement EVT_IDLE pour éviter les étreintes fatales d'évènements. Exemple : self.frame.Bind(wx.EVT_NAVIGATION_KEY,self.onFrameNavigationKey) self.frame.Bind(wx.EVT_IDLE, self.onIdle) ... def onFrameNavigationKey(self,event): obj= self.frame.FindFocus() forward= event.GetDirection() ... self.focus= objet_x_ou_y def onIdle(self,event): if self.focus != None: self.focus.SetFocus() self.focus= None
C'est un sujet pas si compliqué qu'il y parait, et comme d'habitude avec wx, on peut faire quasiment n'importe quoi. A+ jm
Bonsoir,
Dans une fenêtre avec pas mal de widgets, comment gere t'on le focus ( ordre
de passage avec la touche tab) ?
Le focus est donné en automatique suivant l'ordre de création des objets
dans la fenêtre, ce qui convient généralement.
De plus, il faut que la fenêtre aie le style wx.TAB_TRAVERSAL
Exemple :
frame=
wx.Frame(parent,wx.ID_ANY,'titre',pos=wx.Point(10,10),size=wx.Size(950,500),
style=wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL|wx.FRAME_TOOL_WINDOW)
Mais ça peut ne pas suffire. On peut vouloir gérer plus finement lorsque
qu'on a des 'super' objets comme des tree, des grids ou des notebooks.
Dans ce cas, le mieux est de gérer un évènement wx.EVT_NAVIGATION_KEY
qui donnera l'objet en cours et la direction souhaitée (haut ou bas) et
de décider soi-même où l'on veut mettre le focus. Enfin, il est
préférable de donner le focus dans un évènement EVT_IDLE pour éviter les
étreintes fatales d'évènements.
Exemple :
self.frame.Bind(wx.EVT_NAVIGATION_KEY,self.onFrameNavigationKey)
self.frame.Bind(wx.EVT_IDLE, self.onIdle)
...
def onFrameNavigationKey(self,event):
obj= self.frame.FindFocus()
forward= event.GetDirection()
...
self.focus= objet_x_ou_y
def onIdle(self,event):
if self.focus != None:
self.focus.SetFocus()
self.focus= None
C'est un sujet pas si compliqué qu'il y parait, et comme d'habitude avec
wx, on peut faire quasiment n'importe quoi.
A+
jm
Dans une fenêtre avec pas mal de widgets, comment gere t'on le focus ( ordre de passage avec la touche tab) ? Le focus est donné en automatique suivant l'ordre de création des objets
dans la fenêtre, ce qui convient généralement. De plus, il faut que la fenêtre aie le style wx.TAB_TRAVERSAL Exemple : frame= wx.Frame(parent,wx.ID_ANY,'titre',pos=wx.Point(10,10),size=wx.Size(950,500), style=wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL|wx.FRAME_TOOL_WINDOW)
Mais ça peut ne pas suffire. On peut vouloir gérer plus finement lorsque qu'on a des 'super' objets comme des tree, des grids ou des notebooks. Dans ce cas, le mieux est de gérer un évènement wx.EVT_NAVIGATION_KEY qui donnera l'objet en cours et la direction souhaitée (haut ou bas) et de décider soi-même où l'on veut mettre le focus. Enfin, il est préférable de donner le focus dans un évènement EVT_IDLE pour éviter les étreintes fatales d'évènements. Exemple : self.frame.Bind(wx.EVT_NAVIGATION_KEY,self.onFrameNavigationKey) self.frame.Bind(wx.EVT_IDLE, self.onIdle) ... def onFrameNavigationKey(self,event): obj= self.frame.FindFocus() forward= event.GetDirection() ... self.focus= objet_x_ou_y def onIdle(self,event): if self.focus != None: self.focus.SetFocus() self.focus= None
C'est un sujet pas si compliqué qu'il y parait, et comme d'habitude avec wx, on peut faire quasiment n'importe quoi. A+ jm