IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

les signaux : click droit sur bouton (entre autre) [Fait]


Sujet :

GTK+ avec Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut les signaux : click droit sur bouton (entre autre)
    salut, je débute avec gtk, et me voilà confronté à mon premier problème ...

    j'utilise la fonction connect pour intercepter les signaux de mes objets. j'intercepte sans problème "clicked" (sur les boutons) et "activate" (sur les items de menus) pour renvoyer à une procedure de traîtement.

    mes questions sont :

    1) quel est le signal pour intercepter un click droit sur un bouton ?
    2) plus généralement : où trouver la liste de tous les signaux existants pour chaque objet ?

    je précise que j'ai cherché sur le net mais sans succès, c'est pourquoi je passe par ici.

    merci d'avance pour vos éclairages !

    ps : je développe avec python

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Salut,

    Il faut utiliser le signal : button-press-event (au passage note l'endroit où sont documentés les signaux )

    Et en second paramètre, tu reçois un gtk.gdk.Event, et lorsqu'il s'agit d'un clique, tu peux connaitre le bouton utilisé :
    gtk.gdk.BUTTON_PRESS
    gtk.gdk._2BUTTON_PRESS
    gtk.gdk._3BUTTON_PRESS
    gtk.gdk.BUTTON_RELEASE
    [...]
    "button" Read/Write The button which was pressed or released, numbered from 1 to 5. Normally button 1 is the left mouse button, 2 is the middle button, and 3 is the right button. On 2-button mice, the middle button can often be simulated by pressing both mouse buttons together.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut
    gtk.gdk.BUTTON_PRESS
    gtk.gdk._2BUTTON_PRESS
    gtk.gdk._3BUTTON_PRESS
    gtk.gdk.BUTTON_RELEASE
    ceci correspond à un double ou triple click. mais en cherchant un peu avec ta piste j'ai trouvé comment faire :

    3 c'est l'indice du bouton droit

    voilà, merci gege

    ps : magnifique avatar

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Michel_57
    ceci correspond à un double ou triple click. mais en cherchant un peu avec ta piste j'ai trouvé comment faire :

    3 c'est l'indice du bouton droit

    voilà, merci gege
    ça semble normal, ce sont des constantes.

    Un p'tit tours au sources : http://developer.gnome.org/doc/API/2...TON-PRESS:CAPS

    Citation Envoyé par Michel_57
    ps : magnifique avatar
    Merci, en fait c'était un avatar temporaire qui à fait plus que son temps

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut
    bon je suis de bonne humeur j'ai fini mon programme qui tourne à merveille ! alors je vais mettre une solution détaillée je suis sûr que ça aidera quelqu'un (vu que moi je n'ai pas trouvé ailleurs sur le net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import gtk
     
    class UneClasse:
     
    	def __init__(self):
    		self.fenetre=gtk.Window(gtk.WINDOW_TOPLEVEL)
    		self.fenetre.set_title("Titre")
    		self.fenetre.set_default_size(200,200)
    		self.fenetre.set_position(gtk.WIN_POS_CENTER)
    		self.fenetre.connect("destroy",gtk.main_quit,None)
    		self.bouton=gtk.Button("cliquez pour voir")
    		self.bouton.connect("button-press-event",self.unClick)
    		self.fenetre.add(self.bouton)
    		self.fenetre.show_all()
    		gtk.main()
     
    	def unClick(self,w,event):
    		if (event.button==3):
    			self.bouton.set_label("droit")
    		elif (event.button==1):
    			self.bouton.set_label("gauche")
     
    if __name__ == '__main__':
    	UneClasse()
    pour le click gauche on peut aussi le faire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import gtk
     
    class UneClasse:
     
    	def __init__(self):
    		self.fenetre=gtk.Window(gtk.WINDOW_TOPLEVEL)
    		self.fenetre.set_title("Titre")
    		self.fenetre.set_default_size(200,200)
    		self.fenetre.set_position(gtk.WIN_POS_CENTER)
    		self.fenetre.connect("destroy",gtk.main_quit,None)
    		self.bouton=gtk.Button("cliquez pour voir")
    		self.bouton.connect("button-press-event",self.unClick)
    		self.bouton.connect("clicked",self.clickGauche)
    		self.fenetre.add(self.bouton)
    		self.fenetre.show_all()
    		gtk.main()
     
    	def unClick(self,w,event):
    		if (event.button==3):
    			self.bouton.set_label("droit")
     
    	def clickGauche(self,w):
    			self.bouton.set_label("gauche")
     
    if __name__ == '__main__':
    	UneClasse()
    Python ça ROXXXXXX

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Michel_57
    alors je vais mettre une solution détaillée je suis sûr que ça aidera quelqu'un (vu que moi je n'ai pas trouvé ailleurs sur le net)
    Je vais essayer de lui trouver une place dans la FAQ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. click droit sur un bouton ?
    Par yassin123441 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 03/06/2011, 13h09
  2. [Dojo] Creer un menu sur click droite sur les ligne d'une grid
    Par devkaty dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 26/01/2010, 15h47
  3. Réponses: 1
    Dernier message: 28/08/2005, 07h30
  4. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48
  5. [JSP][Javascript] click droit sur un lien
    Par Stessy dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 24/09/2004, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo