Bonjour,

dans un programme, je souhaiterais récupérer le contenu d'une entry et cela à chaque fois qu'une touche est pressée. J'ai donc créé une variable Tk de type StringVar() qui est la variable texte de l'entry:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
varTk = StringVar()
mon_entry = Entry(fen_parent, textvariable =varTk)
De même, je réceptionne le contenu de l'entry à l'aide de la commande .get():
Le souci est que la valeur enregistrée contient tout le contenu de l'entry sauf la dernière touche tapée. (exemple: j'ai tapé "azerty" et le contenu mémorisé est "azert" car le "y" est la dernière touche tapée.
Je voulais donc savoir s'il existait une manière de mémoriser tout le contenu de l'entry (en "rafraîchissant" le contenu de l'entry par exemple).

Voici un bout de mon code:
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
33
34
35
36
# -*- coding: cp1252 -*-
from Tkinter import *
 
class NewEntry(Entry):
    """"""
    def __init__(self, boss =None):
        self.varTk = StringVar()
        Entry.__init__(self, textvariable =self.varTk,
                       validate ='key', vcmd =self.verifClavier)
        self.bind('<Key>', func=self.quelleTouche)
 
    def quelleTouche(self, event):
        """Retiens la touche qui vient d'être tapée."""
        self.touche =event
        self.configure(validate ='key', vcmd =self.verifClavier)
        #print "Le contenu de l'entry est:", self.varTk.get()
 
    def verifClavier(self):
        """Permet uniquement que l'utilisateur tape 1 chiffre dans les entry."""
        try: self.touche    #Si l'entryest modifiée sans avoir appuyé sur...
        except: return True #...une touche, on n'effectue pas la vérification
 
        if self.touche.char in '0123456789' or\
           self.touche.keysym == 'BackSpace':
            print "Le contenu de l'entry est:", self.varTk.get()
            return True
        else:
            self.bell()
            return False
 
#-----------------Si le programme est le programme principal:-------------------
if __name__ == "__main__":
    fen = Tk()
    ent = NewEntry(boss =fen)
    ent.pack()
    fen.mainloop()
Merci d'avance pour votre aide.