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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| # -*- coding: UTF-8 -*-
# Nom: validation_focusout_validate_1.0.py
#-------------------------------------------------------------------------------
from tkinter import *
def valid(ex): ## vérif de la saisie qui doit être >= 0
try:
if ex==1: ## verif de la saisie de Entry: E1
val = float(varE1.get())
if val < 0:
invalid(ex)
elif ex==2:
val = float(varE2.get())
if val < 0: ## verif de la saisie de Entry: E2
invalid(ex)
except ValueError:
invalid(ex)
return 0
return 1
def sortie_e(event):
fen.event_generate('<Tab>')
def invalid(ex):
if ex==1:
E1.focus_set() ## pour revenir sur la saisie incorecte dans E1
E1.select_range(0,END) ## pour remplacer l'erreur
fen.event_generate(0) ## par un 0
fen.event_generate('<Tab>')
elif ex==2:
E2.focus_set() ## pour revenir sur la saisie incorecte dans E2
E2.select_range(0,END)
fen.event_generate(0)
fen.event_generate('<Tab>')
fen = Tk()
varE1 = StringVar() ; varE1.set(0)
varE2 = StringVar() ; varE2.set(0)
E1 = Entry(fen, textvariable = varE1, validate = 'focusout',
validatecommand = lambda ex=1: valid(ex))
E1.grid(column=0,row=0,padx=5)
E2 = Entry(fen, textvariable = varE2, validate = 'focusout',
validatecommand = lambda ex=2: valid(ex))
E2.grid(column=1,row=0,padx=5)
E1.focus_set()
E1.bind('<Return>', sortie_e)
E2.bind('<Return>', sortie_e)
fen.mainloop() |
Partager