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 :

[Tkinter] entry et focus ?


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    Par défaut [Tkinter] entry et focus ?
    bonjour,

    j'ai un petit souci avec un "entry".

    dans une classe,
    je cree un entry (de saisie de string) avec un bouton pour recuperer son contenu.
    une variable StringVar dans la classe et tout et tout. :-)
    l'entry se trouve dans une frame cree par la classe.

    quand je teste la classe seule, ca marche bien.

    par contre, quand j'appele la construction de cette frame via un menu d'une application,
    je perds le focus de l'entry !!!!??
    c'est a dire que je ne peux plus rentrer dans l'entry avec le curseur.
    si je reduis la fenetre, et que je la restaure,
    je peux enfin mettre mon curseur dans l'entry.

    je trouve cela plutot ennuyeux

    j'ai essaye de donner le focus a l'entry a sa creation avec "e.focus_set()".
    mais ca ne marche pas non-plus.

    je voulais essayer avec l'option "takefocus" de l'entry,
    mais je n'ai toujours pas compris comment ca marche.


    voila, si quelqu'un a une idee ???

  2. #2
    Membre chevronné
    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
    Par défaut
    Bonjour,
    Il doit y avoir une erreur dans ton code, mais je ne peux pas te dire où...
    Un exemple tout bête :
    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
    from Tkinter import *
     
    class MyEntry(Frame):
        def __init__(self,root):
            Frame.__init__(self,root)
            self.text=StringVar()
            Button(self,text='clik',command=self.onClik).pack(side='left')
            self.entree=Entry(self,textvariable=self.text)
            self.entree.pack()
            self.entree.focus_set()  #on donne le focus à l'Entry
        def onClik(self):
            print self.text.get()
     
    if __name__=="__main__":
        def afficher():
            le=MyEntry(root)
            le.pack()
     
        root=Tk()
        b=Button(root,text='Afficher',command=afficher)
        b.pack()
        root.mainloop()

  3. #3
    Membre confirmé 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
    Par défaut
    merci pierjean. ton exemple est tres bien.
    desole, je n'avais pas mis le code car c'est au milieu d'une application ...
    mais j'avais fait a peu pres comme toi.

    heureusement, depuis, j'ai un peu travaille dessus
    et j'ai localise d'ou ca vient.
    par contre je n'ai toujours pas compris pourquoi ?
    ni comment le resoudre !!!

    enfin, j'ai repris ton code,
    et j'y ai ajouter le probleme.
    ca semble venir d'une fenetre de dialogue que j'ouvre plus tot dans le programme.


    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
    27
    28
    29
    30
    31
    32
     
    from Tkinter import *
    import tkMessageBox
     
    class MyEntry(Frame):
      def __init__(self,master):
        Frame.__init__(self,master)
        self.text=StringVar()
        Button(self,text='clik',command=self.onClik).pack(side='left')
        self.entree=Entry(self,textvariable=self.text)
        self.entree.pack()
        self.entree.focus_set()  #on donne le focus a l'Entry
      def onClik(self):
        print self.text.get()
     
    class App:
      def __init__(self, afficher):
        self.root=Tk()
     
        message = "cette fenetre influerait-elle sur le focus ?"
        ## answer = tkMessageBox.askyesno(message=message) # ligne a commenter et decommenter 
     
        b=Button(self.root,text='Afficher',command=lambda m=self.root:afficher(m))
        b.pack()
        self.root.mainloop()    
     
    if __name__=="__main__":
      def afficher(master):
        le=MyEntry(master)
        le.pack()
     
      app = App(afficher)

    si quelqu'un comprend pourquoi ?
    et comment le resoudre, je suis preneur.

  4. #4
    Membre confirmé 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
    Par défaut
    est-ce que quelqu'un a tester l'exemple ci-dessus ?
    au moins pour savoir si le probleme ne vient pas de ma machine et/ou version...

  5. #5
    Membre chevronné
    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
    Par défaut
    Bonjour,

    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
    27
    28
    29
    30
    from Tkinter import *
    import tkMessageBox
     
    class MyEntry(Frame):
      def __init__(self,master):
        Frame.__init__(self,master)
        self.text=StringVar()
        Button(self,text='clik',command=self.onClik).pack(side='left')
        self.entree=Entry(self,textvariable=self.text)
        self.entree.pack()
        self.entree.focus_set()  #on donne le focus a l'Entry
      def onClik(self):
        print self.text.get()
     
    class App:
      def __init__(self, afficher):
        self.root=Tk()
        b=Button(self.root,text='Afficher',command=lambda m=self.root:afficher(m))
        b.pack()
        self.root.wait_visibility() # ou self.root.update_idletasks() pour être sûr que la toplevel soit créée
        message = "cette fenetre influerait-elle sur le focus ?"
        answer = tkMessageBox.askyesno(message=message) # ligne a commenter et decommenter 
        self.root.mainloop()    
     
    if __name__=="__main__":
      def afficher(master):
        le=MyEntry(master)
        le.pack()
     
      app = App(afficher)

  6. #6
    Membre confirmé 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
    Par défaut
    ca a l'air de marcher.

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

Discussions similaires

  1. Affectation avec tkinter - Entry
    Par CapDobey dans le forum Général Python
    Réponses: 5
    Dernier message: 31/05/2014, 11h47
  2. Validation de saisie sur Tkinter.Entry
    Par robx2309 dans le forum Général Python
    Réponses: 6
    Dernier message: 20/06/2013, 14h59
  3. [Tkinter] Entry
    Par THE_VIP dans le forum Tkinter
    Réponses: 2
    Dernier message: 13/05/2006, 21h31
  4. [Tkinter] Entry
    Par THE_VIP dans le forum Tkinter
    Réponses: 2
    Dernier message: 07/05/2006, 22h05
  5. [Tkinter] Un entry a plusieurs lignes
    Par mcdonald dans le forum Tkinter
    Réponses: 4
    Dernier message: 20/11/2005, 22h57

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