Gestionnaire d'événement

DéfinitionGestionnaire d'événement

Un gestionnaire d'événement est une fonction du programme ou une méthode d'une classe permettant de gérer un événement spécifique.

Le gestionnaire d'événement a un seul paramètre l'événement à traiter. Lorsque c'est une méthode d'une classe, il y a deux paramètres, le premier étant l'objet lui même et ensuite l'événement à traiter.

ExempleGestion des menus

Cet exemple crée une classe MaFenetre. Le constructeur de MaFenetre appelle la méthode installer_menu.

1
import wx
2
3
class MaFenetre(wx.Frame):    
4
    def __init__(self):
5
        super().__init__(parent=None, title='Ma première fenêtre avec menu')
6
        self.installer_menu()
7

La méthode installer_menu crée une barre de menu, objet wx.MenuBar().

1
    def installer_menu(self):
2
        barre_menu = wx.MenuBar()
3

Une barre de menu contient des menus ; un menu contient des articles. Un menu est crée (objet wx.Menu()) auquel on ajoute deux articles nommés 'A propos' et 'Quitter' en utilisant la méthode Append. Le menu ainsi créé est ajouté à la barre des menu en utilisant la méthode Append. La Barre des menus est associé à la fenêtre (objet self) en utilisant la méthode SetMenuBar.

1
        menu_fichier = wx.Menu()
2
        article_apropos = menu_fichier.Append(wx.ID_ABOUT, 'A propos', 'A propos de moi')
3
        article_quitter = menu_fichier.Append(wx.ID_EXIT, 'Quitter', "Quitter l'application")
4
        barre_menu.Append(menu_fichier, '&Fichier')
5
        self.SetMenuBar(barre_menu)
6

L'appel de la méthode Bind permet d'exécuter lorsqu'un événement wx.EVT_MENU se produit soit la méthode OnQuit si c'est l'article article_quitter ou la méthode ou OnAbout lorsque c'est l'article article_apropos.

1
        self.Bind(wx.EVT_MENU, self.OnQuit, article_quitter)
2
        self.Bind(wx.EVT_MENU, self.OnAbout, article_apropos)
3

Les deux méthodes de la classe maFenetre gérant les articles des menus, OnQuit et OnAbout, affiche le numéro de article sélectionné et un message. La méthode OnQuit quitte le programme en appelant la méthode self.OnQuit

1
    def OnQuit(self, e):
2
        print('Article : ',e.GetId() )
3
        print("Je quitte") 
4
        self.Close()
5
        
6
    def OnAbout(self, e):
7
        print('Article : ',e.GetId() )
8
        print("bonjour")
9

Le programme complet est ici.

1
import wx
2
3
class MaFenetre(wx.Frame):    
4
    def __init__(self):
5
        super().__init__(parent=None, title='Ma première fenêtre avec menu')
6
        self.installer_menu()
7
8
    def installer_menu(self):
9
        barre_menu = wx.MenuBar()
10
        menu_fichier = wx.Menu()
11
        article_apropos = menu_fichier.Append(wx.ID_ABOUT, 'A propos', 'A propos de moi')
12
        article_quitter = menu_fichier.Append(wx.ID_EXIT, 'Quitter', "Quitter l'application")
13
        barre_menu.Append(menu_fichier, '&Fichier')
14
        self.SetMenuBar(barre_menu)
15
        self.Bind(wx.EVT_MENU, self.OnQuit, article_quitter)
16
        self.Bind(wx.EVT_MENU, self.OnAbout, article_apropos)
17
18
    def OnQuit(self, e):
19
        print('Aticle : ',e.GetId() )
20
        print("Je quitte")
21
 
22
        self.Close()
23
        
24
    def OnAbout(self, e):
25
        print('Aticle : ',e.GetId() )
26
        print("bonjour")
27
28
if __name__ == '__main__':
29
    app = wx.App()
30
    frame = MaFenetre()
31
    frame.Show()
32
    app.MainLoop()
33