Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

Chapitre 20. Gestion avancée des évènements et signaux

Table des matières

20.1. Méthodes des signaux
20.1.1. Connecter et déconnecter les gestionnaires de signaux
20.1.2. Bloquer et libérer les gestionnaires de signaux
20.1.3. Émettre et stopper les signaux
20.2. Émission et propagation du signal

20.1. Méthodes des signaux

Les méthodes des signaux sont des méthodes de gobject.GObject qui sont héritées par le gtk.Object inclus dans tous les widgets GTK+.

20.1.1. Connecter et déconnecter les gestionnaires de signaux

  id_gestionnaire = objet.connect(nom, rappel, args_rappel)
  
  id_gestionnaire = objet.connect_after(nom, rappel, args_rappel)
  
  id_gestionnaire = objet.connect_object(nom, rappel, slot_object, args_rappel)
  
  id_gestionnaire = objet.connect_object_after(nom, rappel, connecteur_objet, args_rappel)
  
  objet.disconnect(id_gestionnaire)

Les quatre premières méthodes connectent un gestionnaire de signal (rappel) à un gtk.Object (objet) pour le signal spécifié par nom et retournent une valeur id_gestionnaire qui identifie la connexion. Le paramètre args_rappel consiste en zéro ou plusieurs arguments qui sont transmis dans l'ordre à rappel. Les méthodes connect_after() et connect_object_after() voient leurs gestionnaires de signal appelés après les autres gestionnaires (y compris les gestionnaires implicites) connectés au même objet et même signal. Chaque gestionnaire de signal d'objet possède son propre ensemble d'arguments auquel il s'attend. Il faut se référer à la documentation GTK+ pour trouver quels arguments sont nécessaires pour un gestionnaire de signal, bien que l'information pour les widgets courants soit disponible dans l'Annexe A, Les signaux GTK. Le gestionnaire de signal classique ressemble à :

  def gest_signal(objet, ...., args_rappel):

Les gestionnaires de signaux qui appartiennent à une classe Python (indiqués dans les méthodes connect() comme self.rappel) possèdent un argument supplémentaire en première position - l'instance d'objet self :

  gest_signal(self, objet, ...., args_rappel)

Les méthodes connect_object() et connect_object_after() appellent le gestionnaire de signal avec, en premier argument, le paramètre connecteur_objet au lieu de objet :

  def gest_signal(connecteur_objet, ...., args_fonc):

  def gest_signal(self, connecteur_objet, ...., args_fonc):

La méthode disconnect() supprime la connexion entre un gestionnaire de signal et un signal d'objet. Le paramètre id_gestionnaire indique quelle connexion supprimer.

20.1.2. Bloquer et libérer les gestionnaires de signaux

Les méthodes suivantes :

  objet.handler_block(id_gestionnaire)

  objet.handler_unblock(id_gestionnaire)

... bloquent et débloquent le gestionnaire de signal indiqué par id_gestionnaire. Lorsqu'un gestionnaire de signal est bloqué, il ne peut être appelé lorsque le signal se produit.

20.1.3. Émettre et stopper les signaux

Les méthodes suivantes :

  objet.emit(nom, ...)

  objet.emit_stop_by_name(nom)

... émettent et stoppent le signal nom. Émettre le signal provoque l'exécution du gestionnaire implicite et des gestionnaires définis par l'utilisateur. La méthode emit_stop_by_name() avorte l'émission actuelle du signal de ce nom.