C'est possible de bloquer caractères dans barre d'entree ?

Noe -  
mamiemando Messages postés 33744 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour, j'ai besoin d'aide :

J'ai créé un programme tkinter qui permet de convertir des nombres décimaux en binaires et en hexadécimaux, et je voudrais savoir si il est possible d'empecher certains caractères d'être entrés dans le champ de saisie (par exemple: ? ;  ! ) car sinon le programme bug (c'est logique). Ou sinon de ne laisser passer que les chiffres.

Merci

A voir également:

5 réponses

Diablo76
 

Salut,

En utilisant validate dans les paramètres de l'Entry(), tu ne pourras saisir que des chiffres.

from tkinter import *

def only_numbers(char):
    return char.isdigit()

root = Tk()
validation = root.register(only_numbers)
ent = Entry(root,validate="key", validatecommand=(validation, '%S'))
ent.pack()
root.mainloop()
1
mamiemando Messages postés 33744 Date d'inscription   Statut Modérateur Dernière intervention   7 871
 

La solution de Diablo76 est la bonne, il faut juste adapter la fonction only_numbers en fonction des caractère autorisés.

def only_hexa(a):
    return a in set("0123456789abcdefABCDEF")

def only_dec(a):
    return a in set("0123456789.-")

Plus de détails ici.

Bonne chance

1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 

bonjour,

le plus simple, c'est d'éviter que le programme ne se termine en erreur.

0
Noe
 

Et comment on fait ca ?

0
PierrotLeFou
 

Tu pourrais regarder du côté de try / except

Une petite boucle tant que c'est pas bon, je recommence ...

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 

Si tu nous montres ton code, nous pourrons te donner des conseils plus précis.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Noe
 
def convert_decimalBinaire():
    n = int(entree1_1.get())
    b = 0
    ord = 0
    while n != 0 :
        reste = n % 2
        p = 10 ** ord
        b = b + reste * p
        ord = ord + 1
        n = n // 2
    sortie1_1.delete(0 , END)
    sortie1_1.insert( 0 , b)

Voici une partie de mon programme.

Merci mamiemando, mais comment je l'intègre à mon programme ?

0
mamiemando Messages postés 33744 Date d'inscription   Statut Modérateur Dernière intervention   7 871
 

C'est surtout Diablo76 qu'il faut remercier :-)

Outre le fait que certaines variables ne sont pas définies dans le code que tu viens de partager, je ne vois pas trop le rapport avec la question initiale. Je pense que ta nouvelle question est "comment mettre à jour un label après avoir un cliqué sur un bouton dans tkinter" et dans ce cas je te renvoie à cet exemple :

import tkinter as tk
win = tk.Tk()
def changetext():
	a.config(text="changed text!")
a = tk.Label(win, text="hello world")
a.pack()
tk.Button(win, text="Change Label Text", command=changetext).pack()
win.mainloop()

Si ça ne répond pas à ta question et qu'elle n'a pas de rapport avec la question initiale, je t'invite à la reformuler dans une nouvelle discussion.

0