2017-08-15 2 views
1

est-il possible de stocker des événements de clavier dans une seule chaîne? avec le code ci-dessous, il stocke seulement un caractère et l'imprime. mais pour un lecteur de carte ou un lecteur de code à barres, il contient une collection de caractères/chaînes pas un caractère à la fois. Le but est de sauvegarder tous les caractères dans la variable texte.python Tkinter Capture des événements de clavier en une seule chaîne

from tkinter import * 

root = Tk() 

def key(event): 
    text= event.char 
    text+= event.char 
    print ("pressed", text) 

def callback(event): 
    frame.focus_set() 
print ("clicked at", event.x, event.y) 

frame = Frame(root, width=100, height=100) 
frame.bind("<Key>", key) 
frame.bind("<Button-1>", callback) 
frame.pack() 

root.mainloop() 

Répondre

2

Actuellement, vous créez la variable text, chaque fois que la fonction est appelée key(), et le texte, il ne stocke que le dernier caractère que vous avez saisi.

Vous pouvez définir le texte comme une variable de niveau du module, et utiliser ce niveau du module text dans votre fonction key -

text = '' 
def key(event): 
    global text 
    text+= event.char 
    print("pressed", text) 
+0

oui Got, merci un homme beaucoup –

+0

Anand, comment puis-je imprimer du texte en dehors de la fonction –

+0

juste utiliser la variable 'text' en dehors de la fonction, il contiendrait tous les caractères pressés jusqu'à maintenant. –