Bonsoir à tous,
Je suis entrain de programmer un petit jeu avec tkinter, et je tourne en rond depuis pas mal de temps! J'ai ici un code qui permet d'ouvrir 2 fenêtres: lorsqu'on clique sur la première, mon personnage se déplace jusqu'à un bâtiment, puis s'arrête. Là, une fenêtre s'ouvre avec un mini qcm. On y répond en écrivant un chiffre dans un "entry". Voici mon problème: dans le code que voici (j'ai essayé de le simplifier au max) ent est le nom de mon widget 'Entry'. Seulement un message d'erreur m'annonce que ent n'est pas défini. EN effet il est défini plus as dans le programme. J'ai donc essayé d'inverser, mais du coup c'est la fenêtre qui n'était plus définie, enfin bref, je tourne en rond comme je l'ai dit plus haut. Je m'adresse donc à vous car je m'avoue vaincue!
Merci,
P0lette

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#Définitions deas variables du Sphinx
GAGNE = "Bravo"
PERDU = "Perdu."
N = 4
 
# traitement de l'Entry
def getResult() :
 
    value = ent.get()
    #Si la réponse donnée n'est pas une valeure numérale
    if not value or not value.isdigit():
        raise ValueError ("Vous devez répondre par un chiffre!")
 
    n = int(value)
 
    ent.delete (0, END)
 
    if n== 4:
        labRes ['text'] = GAGNE
    else:
        labRes ['text'] = PERDU
        chantier = Tk()
        excuses = Label (chantier, text = """Jeu en cours de création, pour continuer
l'aventure, recommencer le jeu et répondre 4 à l'épreuve du bac""")
        excuses.pack()
 
####Début du programme####
 
mafenetre=Tk()
mafenetre.title("JEU")
lab = Label (text = "CLiquez pour commencer")
lab.pack()
monbouton= Button(mafenetre,text="quitter",command = mafenetre.quit)
monbouton.pack()
 
canevas = Canvas(mafenetre,width=1150,height=997,background="white")
canevas.pack()
 
perso = PhotoImage(file = "perso avant le bac.gif")
balle = canevas.create_image(348,648, image = perso)
 
#Classe: toplevel 
class Window(Toplevel):
    def __init__(self, master=None):
        Toplevel.__init__(self, master)
        lab = Label(self, text="""Qui a quatre pattes le matin, deux à midi et trois le soir...Quelle énigme est-ce?
1-l'épitaphe de diophante
2_le paradoxe du doublement de jules henri poincarré
3_l'énigme de webber
4_l'énigme du sphinx
""", font = "arial 15")
        lab.pack()
        ent = Entry(self)
        ent.pack()
        ButValider= Button(self,text="valider",command=getResult)
        ButValider.pack()
        button = Button(self, text="fermer", command=self.fermer)
        button.pack()
 
 
#Entrée dans le bâtiment
x,y = 348, 648
dx,dy = -1,0  
def move():
    global x,y,dx,dy
    x,y = x+dx, y+dy
    if (x < 200) : 
        dx,dy = 0,0
        w = Window()
        def fermer(self):
            self.destroy()
 
    canevas.coords(balle,x,y)
    mafenetre.after(25,move)
 
 
def pointeur (event):
    x,y = event.x, event.y
    move()
    lab.destroy()
canevas.bind("<Button-1>", pointeur)