2017-07-10 4 views
0

J'ai quelques questions 1) J'essaie d'obtenir un widget Entry à restreindre aux entrées numériques seulement. J'ai vu quelques échantillons sur débordement de pile mais ils ont tendance à utiliser le codage Tkinter basé sur la classe et je fais le style habituel.Vérification des entrées numériques dans un Widget d'entrée Tkinter

E=Entry(t3, bg='gray', textvariable=weekly_savings[num], validate='focus', validatecommand=MoneyValidation)) 
I am not sure how to implement this money validation. The window code is as follows 
t3=Toplevel(root) 
bg='gold' 
t3.title(u"\u092c\u0939\u0940 \u0916\u0924\u093e") 
t3.geometry('800x450+100+50') 
t3.transient(root) 
t3.configure(background=bg) 
t3.overrideredirect(True) 

En second lieu, je travaille avec une population semi-alphabétisés pour mon dernier cas d'utilisation et nous voudrions utiliser que le clavier de comptables. Je voudrais lier le changement de focus à une touche de verrouillage numérique. Comment je fais ça?

+0

Par « limité à l'entrée numérique que » voulez-vous dire tous non -les caractères numériques ne sont même pas ajoutés à l'entrée lors de la saisie? – Nelson

Répondre

0

Si votre objectif est de permettre que les chiffres apparaissent dans le widget d'entrée, vous pouvez utiliser la méthode détaillée par Bryan Oakley dans this answer:

def MoneyValidation(S): 
    if S in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']: 
     return True 
    t3.bell() # .bell() plays that ding sound telling you there was invalid input 
    return False 

vcmd = (t3.register(MoneyValidation), '%S') 
E = Entry(t3, bg='gray', validate='key', vcmd=vcmd) 
E.pack()