[Tkinter] Erreur premier programme

cs_O_connor Messages postés 1 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 1 décembre 2008 - 1 déc. 2008 à 11:42
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 - 7 déc. 2008 à 12:30
Bonjour à toutes et à tous,

Je poste un ce topic car voilà deux jours que je bloque sur ma petite application que j'essaie de réaliser avec une GUI.
Ce programme le fameux jeu où l'utilisateur doit trouver un nombre caché.

Mon problème est le suivant : a chaque fois que j'entre un nombre, le label m'indiquant que le nombre à trouver est plus petit. Or dans mon application, un check est fait afin de savoir si le nombre entré est plus petit, plus grand ou égal au nombre caché.
On dirait que mes "if" ne fonctionnent pas.

Mon code  :
#_*_ coding:utf-8 _*_

from Tkinter import *

def press():
    nombre_cache = 42
    choix=entre.get()

    if nombre_cache > choix :
        text3=Label(fen1, text="Le nombre caché est plus grand que %s !" % (choix))
        text3.pack()
    if nombre_cache < choix :
        text3=Label(fen1, text="Le nombre caché est plus petit que %s !" % (choix))
        text3.pack()
    else :
        text3=Label(fen1, text="Bravo, le nombre caché était : %s !" % (choix))
        text3.pack()

fen1=Tk()
text1=Label(fen1,text="Essayez de trouver le nombre caché" , fg="red")
text1.pack()
text2=Label(fen1,text="Veuillez entrer un nombre")
text2.pack()
entre=Entry(fen1)
bou1=Button(fen1,text="Entrer",command=press)
entre.pack()
bou1.pack()
fen1.mainloop()

Avez-vous une explication ?

Merci d'avance !

Meilleures salutations,
-- O_connor

2 réponses

Utilisateur anonyme
3 déc. 2008 à 10:07
bonjour,

J'en vois deja quelques-une à l'oeil.

Déjà le 2ème if de ta fonction à transformer en elif

mettre nombre_cache en dehors de ta fonction.

Ensuite tu as créé une fonction press(). Mais je ne vois pas où tu l'apelles dans ton prog principal???

 Voila dejà quelques pistes
0
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
7 déc. 2008 à 12:30
Bonjour.
[auteur/FRED1599/1136696.aspx fred1599]pense que le problème vient de "nombre_cache" et qu'il faut le placer en dehors de la fonction : ça n'a rien avoir avec l'erreur.
De même press() est appeler dans la classe Button() de Tkinter.
Le problème est que "entre.get()" envoie une chaine de caractères et non un nombre. Dans tes test tu compares donc un nombre et des lettres (ce qui pose un problème). La fonction int() de Python transforme une chaine de caractères (où tous les caractères sont des nombres) en un entier (pour transformer en un décimal il faut utiliser float() et pour transformer un nombre en chaine de caractère c'est str()). Met donc un int() dans la ligne choix.

Maintenant fesons un test. Je rentre 43 ! La réponse est "Le nombre caché est plus petit que 43 !". Jusque la tout va bien. Maintenant je met 5 et la rien ne vas plus, j'ai deux réponse : "Le nombre caché est plus grand que 5 !" ça ca va mais la deuxième : "Bravo, le nombre caché était : 5 !"

Gros problème en fait le deuxième test étant négatif le else rentre en jeu (alors qu'il ne devrais pas). Deux solutions, remplacer le else pas un test d'égalité ou mettre en elif au deuième test.
______
Aéra
0
Rejoignez-nous