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

Fermé
Noe - Modifié le 24 nov. 2022 à 16:33
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 25 nov. 2022 à 02:31

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

5 réponses

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 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
24 nov. 2022 à 16:54

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 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
23 nov. 2022 à 23:15

bonjour,

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

0

Et comment on fait ca ?

0

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 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
24 nov. 2022 à 09:44

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
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 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
25 nov. 2022 à 02:31

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