En plus du système de signaux décrit auparavant, un certain nombre d'évènements reflètent le système évènementiel de X, des fonctions de rappel peuvent être associés à ceux-ci. En voici une liste :
event button_press_event button_release_event scroll_event motion_notify_event delete_event destroy_event expose_event key_press_event key_release_event enter_notify_event leave_notify_event configure_event focus_in_event focus_out_event map_event unmap_event property_notify_event selection_clear_event selection_request_event selection_notify_event proximity_in_event proximity_out_event visibility_notify_event client_event no_expose_event window_state_event
Pour connecter une fonction de rappel à l'un de ces évènements,
on utilise la méthode connect
() décrite à la section
précédente, en mentionnant l'un des noms d'évènement ci-dessus comme paramètre
nom
. Les fonctions (ou méthodes) de rappel employées pour
les évènements sont légèrement différentes de celles utilisées pour les signaux :
def fct_rappel(widget, evenement, donnees_fct): def meth_rappel(self, widget, evenement, donnees_meth):
GdkEvent
est un type d'objet Python dont l'attribut
type indique lequel des évènements ci-dessus est survenu. Les autres
attributs de l'évènement dépendent du type de cet évènement. Les valeurs
pour les types peuvent être les suivantes :
NOTHING DELETE DESTROY EXPOSE MOTION_NOTIFY BUTTON_PRESS _2BUTTON_PRESS _3BUTTON_PRESS BUTTON_RELEASE KEY_PRESS KEY_RELEASE ENTER_NOTIFY LEAVE_NOTIFY FOCUS_CHANGE CONFIGURE MAP UNMAP PROPERTY_NOTIFY SELECTION_CLEAR SELECTION_REQUEST SELECTION_NOTIFY PROXIMITY_IN PROXIMITY_OUT DRAG_ENTER DRAG_LEAVE DRAG_MOTION DRAG_STATUS DROP_START DROP_FINISHED CLIENT_EVENT VISIBILITY_NOTIFY NO_EXPOSE SCROLL WINDOW_STATE SETTING
On accède à ces valeurs en préfixant le type d'évènement
avec gtk.gdk. Par exemple : gtk.gdk.DRAG_ENTER
.
En résumé, pour connecter une fonction de rappel à un de ces évènements, on peut procéder ainsi :
bouton.connect("button_press_event", fct_rappel_bouton)
Ainsi, le fait de cliquer avec la souris lorsque le pointeur
se trouve au-dessus du bouton invoque la fonction fct_rappel_bouton
.
On peut définir cette fonction comme ceci :
def fct_rappel_bouton(widget, evenement, donnees):
La valeur renvoyée par cette fonction indique si l'évènement
doit être propagé par le système de gestion des évènements de GTK+.
Renvoyer True
indique que l'évènement a été traité et que
sa diffusion s'arrête ici. En revanche, False
laisse se
poursuivre le processus normal de traitement de l'évènement. Voir le
Chapitre 20, Gestion avancée des signaux et évènements
pour en apprendre plus sur ce processus de diffusion.
Les API de sélection et de glisser-déposer de GDK émettent également
un certain nombre d'évènements qui sont représentés dans GTK+ par des signaux.
Voyez les sections 22.3.2
Les signaux du widget source
et 22.3.4
Les signaux du widget destination
(pas encore traduites) si
vous souhaitez en apprendre plus sur les signatures des fonctions de rappel
pour les signaux suivants :
selection_received selection_get drag_begin_event drag_end_event drag_data_delete drag_motion drag_drop drag_data_get drag_data_received