Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/06/2011, à 12:27

NiRaDo

PyGTK et propagation d'évènements ?

Bonjour.

J'ai une interface graphique GTK faite avec Glade qui comporte :
- Une fenêtre
- Une barre d'outils
- Un GTKImage

diffuseurfinal.th.png

J'ai associé le signal on_i_slide_motion_notify_event au GTKImage pour récupérer les coordonnées de la souris. J'ai implémenté la fonction correspondante :

    def on_i_slide_motion_notify_event(self,sender, event):                
        print('Les coordonnées récupérées sont : ' + str(event))        
        return True

Mais rien apparait quand je passe mon curseur sur le GTKImage.

Par contre, si j'associe le signal à la fenêtre :

    def on_w_fenetreprincipale_motion_notify_event(self, sender, s):
        print("La souris a bougée ..." + str(sender) + str(s))
        return True

... les coordonnées vont apparaître lorsque je pointe mon curseur sur un GTKEntry de la barre d'outils !

Je dois pas avoir bien saisit les évènements en GTK. Y a t-il une histoire de propagation ?

Ce n'est pas normalement le widget le plus au dessus qui reçois en premier ? Quoi que là ça change rien, car le comportement est très étrange.

Ce que j'aimerais : Réussir à récupérer les coordonnées du curseur lorsque ce dernier se trouve sur l'image GTKImage.

Merci d'avance

Dernière modification par NiRaDo (Le 05/06/2011, à 12:29)

Hors ligne

#2 Le 05/06/2011, à 14:39

xapantu

Re : PyGTK et propagation d'évènements ?

Par défaut, le widget ne prend pas en compte cet événement. Sur la dernière version de glade (que tu ne dois pas avoir si tu as installé via les dépôts), tu as des boutons comme ça :
1307277454.png
Il faut cocher les bons événements et ça devrait marcher smile

Si tu n'as pas ça sur ta version de glade, il faut utiliser la méthode add_event(), mais je n'utilise pas python, donc il faudra que tu regardes la doc...

Hors ligne

#3 Le 05/06/2011, à 15:44

NiRaDo

Re : PyGTK et propagation d'évènements ?

Bonjour xapantu.

Merci pour ta réponse.

Je viens de voir que ces cases sont présentes dans ma version de glade.

Dans mon cas, pour récupérer la position du curseur à chaque déplacement je pense que je dois cocher les cases :
- Mouvement du pointeur
- Indications du mouvement du pointeur

Comme ceci :

capture1af.png

Et puis j'ai ajouté le signal correspondant :

captureie.png

... et implémenté la fonction correspondante à l'évènement :

    def on_i_slide_motion_notify_event(self,sender, event):                
        print('Les coordonnées récupérées sont : ' + str(event))        
        return True

Pourtant toujours rien ne s'affiche quand je passe mon curseur sur le i_slide.

Ne faut-il pas que la fenêtre aussi accepte ce type d'évènement pour que ça marche ?

Dernière modification par NiRaDo (Le 05/06/2011, à 15:48)

Hors ligne

#4 Le 05/06/2011, à 16:40

xapantu

Re : PyGTK et propagation d'évènements ?

Non, puisque elle les accepte par défaut (sinon aucun bouton ne fonctionnerait). Le même événement avec la même fonction sur la fenêtre fonctionne ?

Tu pourrais copier/coller un peu de code si tu as le temps ? je n'utilise pas pygtk du tout, et je n'ai pas vraiment le temps de regarder comment on charge le fichier glade…

edit: et sinon, si tu veux tester autre chose, essaye d'ajouter les events au widget via add_events, des fois que...

Dernière modification par xapantu (Le 05/06/2011, à 16:48)

Hors ligne

#5 Le 05/06/2011, à 18:51

AnsuzPeorth

Re : PyGTK et propagation d'évènements ?

Bjr,
Les widgets "non fenêtré" n'ont pas de signaux, comme le label ou image. Il faut le mettre dans une eventBox et connecté le signal de l'eventBox.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#6 Le 05/06/2011, à 20:58

xapantu

Re : PyGTK et propagation d'évènements ?

Ah, ok smile
Je pensais bêtement que les GtkImage héritait des GtkDrawingArea roll

Hors ligne

#7 Le 09/06/2011, à 10:59

NiRaDo

Re : PyGTK et propagation d'évènements ?

Ah, j'ignorais ça ! Merci pour vos réponses à tous les deux. Je vais tenter ce que AnsuzPeorth vient de dire

Hors ligne

#8 Le 09/06/2011, à 12:21

AnsuzPeorth

Re : PyGTK et propagation d'évènements ?

Petite précision, les signaux peuvent être assigné au widget (pas obligé a l'eventbox), mais certain signaux coince ...


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne