Bonjour à tous, je viens de fraichement créer un petit programme pour concevoir un jeu sous python et le module Tkinter. Mais voila, quand j'assemble mes deux premier prototypes, voila ce que la console m'affiche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
>>> Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:/Users/Maxime Helen/Desktop/Programme/Jeu_complet.py", line 89, in scenario
    joueur = saisir.get()
NameError: global name 'saisir' is not defined
Alors que quand j'isole le prototype d'où le problème vient, tout marche parfaitement !
Voici mon programme en entier :

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
from Tkinter import *
from os import chdir
chdir("C:\Users\Maxime Helen\Desktop\Programme\Fichier sauvegardes")
# Importe fonctions de gestions des fichiers et met le dossier de sauvegarde des
# des fiches en répertoire courant
 
def Moyen_Orient () :
    print "sa marche"
 
def Afrique () :
    print "sa marche "
 
def Amerique_Nord () :
    print "sa marche "
 
def Amerique_Sud () :
    print "sa marche "
 
def Europe () :
    print "sa marche "
 
def Asie () :
    print "sa marche "
 
def Australie () :
    print "sa marche "
 
def MaisonEinstein () :
    print "sa marche "
 
 
######################################## FENETRE DE LA CARTE DU CONTINENT ###########################################################
 
def carte_monde () :
 
    fenetre_carte_monde = Toplevel ()
    fenetre_fenetre_nvlpartie.destroy()
    fenetre_carte_monde.title ("carte du monde")
    fenetre_carte_monde.geometry("1600x755")
    fenetre_carte_monde.wm_state(newstate="zoomed")
    # Création de la nouvelle fenêtre décrivant le scénario
 
    cadre2 = Canvas(fenetre_carte_monde,width=1488,height=755,bg="black")
    imageCarteMonde = PhotoImage(file="C:\Users\Maxime Helen\Desktop\Programme\Carte monde.gif")
    image_id3 = cadre2.create_image(744,375,image = imageCarteMonde)
    # Création du canvas positionnant l'image d'einstein
 
    bouton_MoyenOrient=Button(fenetre_carte_monde, text="Moyen Orient",\
                              command =Moyen_Orient, bg = "green" )
    bouton_Afrique=Button(fenetre_carte_monde, text="Afrique",\
                              command = Afrique, bg = "blue" )
    bouton_Amérique_Nord=Button(fenetre_carte_monde, text="Amérique du Nord",\
                              command = Amerique_Nord, bg = "orange" )
    bouton_Amérique_Sud=Button(fenetre_carte_monde, text="Amérique du Sud",\
                              command = Amerique_Sud, bg = "red" )
    bouton_Europe=Button(fenetre_carte_monde, text="Europe",\
                              command = Europe, bg = "white" )
    bouton_Asie=Button(fenetre_carte_monde, text="Asie",\
                              command = Asie, bg = "pink" )
    bouton_Australie=Button(fenetre_carte_monde, text="Australie",\
                              command = Australie, bg = "Yellow" )
    bouton_MaisonEinstein=Button(fenetre_carte_monde, text="Maison d'Einstein",\
                              command = MaisonEinstein, bg = "magenta" )
    # Création des boutons permettant la navigation dans le monde
 
    texte1 = Text(fenetre_carte_monde, width = 30, height = 20)
    content = open("C:\Users\Maxime Helen\Desktop\Programme\Tutorial.txt",'r').read() 
    texte1.insert(AtEnd(),content)
    texte1.config(wrap=WORD)
    # Création du texte décrivant le tutorial de la carte du monde
 
    bouton_MoyenOrient.place(x = 850, y = 230)
    bouton_Afrique.place(x = 750, y = 290)
    bouton_Amérique_Nord.place(x = 295, y = 150)
    bouton_Amérique_Sud.place(x = 400, y = 410)
    bouton_Europe.place(x = 750, y = 135)
    bouton_Asie.place(x = 1050, y = 160)
    bouton_Australie.place(x = 1225, y = 475)
    bouton_MaisonEinstein.place(x = 744, y = 700)
    texte1.place(x=0,y=250)
    cadre2.pack()
    # Placement des widgets
 
######################################## FENETRE DE NOUVELLE PARTIE ###########################################################
 
 
 
def scenario ():
    joueur = saisir.get()
    # Enregistrement du nom du joueur
    fenetre_nouvelle_partie = destroy()
    fenetre_scénario = Toplevel ()
    fenetre_scénario.geometry("1400x1000")
    fenetre_scénario.title("scénario")
    # Création de la nouvelle fenêtre décrivant le scénario
 
    FichierSauvegarde = open(joueur,'a')
    FichierSauvegarde.close()
    # Crée un nouveau fichier de sauvegarde du nom saisie.
 
    lb = Label ( fenetre_scénario, text = "Bienvenue", bg="blue")
    lb1 = Label ( fenetre_scénario, text = joueur, bg="blue")
    # Label de bienvenue avec le nom du joueur
 
    cadre1 = Canvas(fenetre_scénario,width=200,height=200,bg="white")
    imageeinstein2 = PhotoImage(file="C:\Users\Maxime Helen\Desktop\Programme\einstein2.gif")
    image_id2 = cadre1.create_image(100,100,image = imageeinstein2)
    # Création du canvas positionnant l'image d'einstein
 
    texte = Text(fenetre_scénario, width = 100, height = 100)
    content = open("C:\Users\Maxime Helen\Desktop\Programme\scénario.txt",'r').read() 
    texte.insert(AtEnd(),content)
    # Création du texte mettant en scène le scénario
 
    bouton_carte_monde=Button(fenetre_scénario, text="Lancer la partie !", command =carte_monde, bg = "red" )
    # Création du bouton pour lancer la partie
 
    lb.place(x=100,y=500)
    lb1.place(x=200,y=500)
    bouton_carte_monde.place(x=1200,y=500)
    cadre1.pack()
    texte.pack()
    # Placement des widgets
 
 
def nouvelle_partie () :
    fenetredebut.destroy()
    fenetre_nvlpartie = Toplevel ()
    fenetre_nvlpartie.title("Nouvelle partie")
    # Création d'une nouvelle fenêtre pour créer une nouvelle partie
 
    txt1 = Label(fenetre_nvlpartie, text ='Nom du nouveau joueur :')
    saisir = StringVar()
    entr1 = Entry(fenetre_nvlpartie,textvariable = saisir, width = 20)
    txt1.grid(row=1, sticky = E)
    entr1.grid(row =1, column =2)
    # Crée l'espace de saisie du nouveau fichier
 
    bouton_OK=Button(fenetre_nvlpartie, text="OK", command = scenario )
    bouton_OK.grid(row =2,column = 2)
    # Bouton marquant la fin de la saisie et appel la fonction qui va créer
    # le fichier qui aura pour nom l'entrée saisie : " saisie ".
 
 
 
######################################## FENETRE DE DEBUT ###########################################################
 
 
# Création de la fenêtre principale
fenetredebut=Tk()
fenetredebut.geometry("900x500")
fenetredebut.title("Mon jeu")
 
# Titre du jeu
titrejeu = Label(fenetredebut, text="Qui se sent capable de rivaliser avec Einstein ?")
 
 
### canvas avec l'image du jeu  
cadre = Canvas(fenetredebut,width=400,height=521,bg="white")
imageeinstein = PhotoImage(file="C:\Users\Maxime Helen\Desktop\Programme\einstein1.gif")
image_id = cadre.create_image(200,260,image = imageeinstein)
 
 
# Création des boutons de commencement du jeu
bouton_nouvelle_partie=Button(fenetredebut, text="Débuter une nouvelle partie",command=nouvelle_partie) 
bouton_charger_partie=Button(fenetredebut, text="Charger partie")#,command=charger_partie#)
bouton_supprimmer_partie=Button(fenetredebut, text="Supprimer partie")#, command=supprimer_partie)  
bouton_quitter_jeux=Button(fenetredebut, text="Quitter le jeu", command=fenetredebut.destroy) 
 
 
### Mise en page des boutons et canvas de l'image
bouton_nouvelle_partie.grid(row =2,sticky =E )
bouton_charger_partie.grid(row =3, sticky =E)
bouton_supprimmer_partie.grid(row =4, sticky =E)
bouton_quitter_jeux.grid(row =5, sticky =E)
titrejeu.grid(row =1, column = 2)
cadre.grid(row=2,column = 2,rowspan =4)
Je ne comprends pas... Surtout que j'ai annoncer 'saisir' comme un textvariable.
Merci de m'aider ! Je vous serai très reconnaissant de me sortir de ce guépier, surtout que je dois soutenir ce programme devant un jury la semaine prochaine !