Les événements de la bibliothèque WX PYTON
Les gestionnaires
d’événements sont des méthodes qui sont appelées quand quelque
chose se passe dans l'interface graphique (bouton cliqué, etc.)
Nous
allons lier ces gestionnaires d’événement à des widgets
spécifiques pour des événements spécifiques.
A) Les événements dans une application
Par exemple nous allons faire quelque chose quand le bouton est cliqué, ou que la touche ENTREE est pressée dans le champ texte.
Après avoir créé le bouton et la zone de texte à l'aide de la palette, choisir les événements :
wx.EVT_BUTTON dans les événements "ButonEvent" de l’inspecteur de propriétés
wx.EVT_TEXT_ENTER dans les événements "TextCtrlEvent" de l’inspecteur de propriétés
Cela rajoute dans le
code source deux définitions de méthodes :
On créé une méthode OnButton1Button() qui sera appelée quand le bouton est cliqué.
On créé une méthode OnTextCtrl1TextEnter() qui sera appelée quand la touche ENTREE sera pressée dans le champ texte.
Puis, on lie ("bind")
ensuite ces méthodes aux widgets :
Pour le bouton:
Cela a rajouté dans le code
source :
self.button1.Bind(wx.EVT_BUTTON,
self.OnButton1Button, id=wxID_FRAME1BUTTON1)
On utilise ici la
méthode .Bind():
wxID_FRAME1BUTTON1 est le
widget sur lequel on veut "attraper" un événement (notre
bouton).
wx.EVT_BUTTON est le type d’événement qu'on
veut attraper (clic sur un bouton).
self.OnButton1Button
est la méthode qui sera appelée si le bouton est cliqué.
Pour le champ texte:
Cela a rajouté dans le code
source :
self.textCtrl1.Bind(wx.EVT_TEXT_ENTER,
self.OnTextCtrl1TextEnter, id=wxID_FRAME1TEXTCTRL1)
C'est à
nouveau la méthode .Bind() que nous utilisons, mais cette
fois sur l’événement wx.EVT_TEXT_ENTER.
Ainsi:
Cliquer sur le bouton appellera la méthode OnButton1Button().
Presser ENTREE dans le champs texte appellera la méthode OnTextCtrl1TextEnter().
Si on place le
code :
print "Vous
cliquez sur le bouton !"
sous :
def
OnButton1Button(self, event):
à la place de :
event.Skip()
Alors il s'affichera dans la console ou dans
l'onglet Sortie standard de l'Editeur (ou fenêtre MS-Dos) le
message " Vous cliquez sur le bouton ! "
Exemple :
Si
vous voulez changer une zone de texte (label) que vous avez insérez
dans votre fenêtre à laide du bouton créé précédemment,
il
faut :
- Créer une zone de texte statique à l'aide de la palette composants de base (premier widget).
- On
place le code :
self.staticText1.SetLabel( "Vous
cliquez sur le bouton" )
sous :
def
OnButton1Button(self, event):
à la place de :
event.Skip()
La
méthode SetLabel de wx staticText change le texte se
redimensionne.
Il s'affichera alors dans la zone de texte le
message " Vous cliquez sur le bouton ! "
B) Liste des événements
Les cinq premiers types d'événements se retrouvent dans tous les objets. Les autres sont spécifiques à un objet.
1) Les événements liés à l'aide sur un objet (HelpEvent) :
wx.EVT_HELP |
L’événement intervient lorsqu'un utilisateur interroge la bulle d'aide sensible au passage de la souris. |
2) Les événements liés aux touches du clavier (KeyEvent)
wx.EVT_KEY_DOWN |
L’événement intervient lorsqu'une touche du clavier a été pressée. |
wx.EVT_KEY_UP |
L’événement intervient lorsqu'une touche du clavier a été relâché. |
wx.EVT_CHAR |
L’événement intervient après l'appui sur une touche pour la traduction du caractère. |
3) Les événements liés à l'ouverture ou la fermeture d'une fenêtre (FocusEvent)
wx.EVT_KILL_FOCUS |
L’événement intervient après la fermeture de la fenêtre. |
wx.EVT_SET_FOCUS |
L’événement intervient après l'ouverture de la fenêtre. |
4) Les événements liés à la souris (MouseEvent) :
5) Les événements diverses liés à une fenêtre (MiscEvent)
6) Les événements liés à un objet bouton (ButtonEvent)
wx.EVT_BUTTON |
L’événement intervient après le relâchement du clique sur un objet bouton. |
7) Les événements liés à un objet texte modifiable (TextCtrlEvent)