Bonjour,
j'essaye de faire un petit jeu qui consiste à deviner un nombre choisit au hasard.
Il fonctionne très bien, par contre, si je le relance avec le bouton rejouer, il plante.
En mettant des print un peu partout, j'ai vu que c'était au niveau de la ligne 31, self.reponse=Entry(root) que j'ai le problème.
Pour simplifier je n'ai mis que le code qui donne la bonne réponse du premier coup.
Si je joue la première fois, que je donne le bon chiffre et fait Valider, je voie bien ma variable reponse, ligne 21, qui retourne self.reponse.get()
Ensuite si je fais Rejouer, la variable reponse est vide, et j'ai un message d'erreur !
Je pensais qu'en instanciant une classe on la ré-initialisait, mais je dois passer à côté de quelque chose.
Merdi d'avance de votre aide
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
# -*- coding: utf-8 -*-  
 
from tkinter import *
import random
import tkinter.font as font
 
class Jouer_Nombre:
 
    def __init__(self):
        self.NB_MAX=10
        self.NB_MIN=1
        self.reponse=None
        self.nombre=0
        self.affichage=None
 
    def repondre(self,affiche):
        self.affichage['text'] = affiche
        self.reponse.delete(0,END)
 
    def test(self):
        print('test reponse',self.reponse.get())
        if int(self.reponse.get())==self.nombre:
            self.repondre('GAGNE')
            self.reponse.delete(0,"end")
            return
 
    def jouer(self):
        self.nombre=random.randrange(self.NB_MIN,self.NB_MAX+1)
        print('nombre=',self.nombre)
        Label(root, text = 'Ton chiffre entre 1 et 10 :',width=20,height=10,font=helv10).grid(row=0,column=0)
        self.reponse=Entry(root)
        self.reponse.focus_set()#impose le focus 
        self.reponse.grid(row=0,column=1)
        self.affichage = Label(root, width=30,height=10,font=helv10)#affiche les réponses
        self.affichage.grid(row=3,columnspan=2,sticky='nsew')
 
def rejouer():
    nombre=Jouer_Nombre()
    nombre.jouer()
 
#-----------------Debut du programme------------------    
if __name__ == "__main__":
    root = Tk()
    root.title('Trouve le nombre')
    helv10 = font.Font(family='Helvetica', size=10, weight='bold')
    nombre=Jouer_Nombre()
    Button(root, text ='Valider', command=nombre.test).grid(row=1,columnspan=2,sticky='nsew')
    Button(root, text ='Rejouer', command=rejouer).grid(row=4,column=0)
    Button(root, text ='Quitter', command=root.destroy).grid(row=4,column=1)
    nombre.jouer()
    root.mainloop()