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

Tkinter Python Discussion :

un "bind(event)" mal place ?


Sujet :

Tkinter Python

  1. #1
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut un "bind(event)" mal place ?
    l'idee, c'est que je voudrais que des que l'on clique dans une "frame",
    ca declenche un "callback".

    donc, j'ai utilise la methode bind pour l'event du clique souris.

    le souci, c'est que cette frame est pleine de widgets.
    et donc, je n'arrive pas a cliquer dessus. (c'est plutot ennuyeux)

    je voudrais savoir, si l'on peut attacher l'evenement a la frame pour un clique sur n'importe lequel de ses enfants (au sens widget, pas heritage)?

  2. #2
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Si tu n'as qu'une frame, tu peux attacher l'évènement au toplevel.
    Sinon :
    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
    from Tkinter import *
     
    class App:
        def __init__(self):
            self.root=Tk()
            fr=Frame(self.root)
            fr.pack()
            Button(fr,text='button').pack()
            Label(fr,text='un label').pack()
            fr.bind('<Button-1>',self.onclik)
            for w in fr.winfo_children():
                w.bind('<Button-1>',self.onclik)
     
        def onclik(self,event):
            print 'click'
     
    app=App()
    app.root.mainloop()

  3. #3
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut
    oui, c'est l'idee.
    mais je pensais qu'il existait une fonction qui permettait de le faire gerer par la "frame".
    du genre a chaque fois qu'on lui ajoute un enfant, elle lui ajoute ce "bind".
    du style: maFrame.bind_allMyFamily(...)
    et apres tu n'as plu a t'en soucier.

    en tout cas, merci pour ton aide,
    je vais faire comme ca pour le moment.
    ca ira tres bien.

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Si tu veux avoir un évènement qui s'exécute quelquesoit le widget qui a le focus, il faut utiliser la fonction bind_all (=> http://python.developpez.com/faq/?pa...TkBindAllEvent )

    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
    from Tkinter import *
     
    class App:
        def __init__(self):
            self.root=Tk()
            fr=Frame(self.root)
            fr.pack()
            Button(fr,text='button').pack()
            Label(fr,text='un label').pack()
            fr.bind_all('<Button-1>',self.onclik)
     
        def onclik(self,event):
            print 'click'
     
    app=App()
    app.root.mainloop()

  5. #5
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut
    oui guigui, j'avais vu ca.
    en fait je pensais que peut etre il existait quelque chose entre les deux.

    car je voudrais l'equivalent du "bin_all", mais limite au niveau de la frame a laquelle je l'attache.
    d'ou le "bind_allMyFamily".

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

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

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