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