Bonjour,
J'utilise Python 3.2.1
je cherche à fermer une fenêtre ouverte dans une def via une autre def sans obtenir le message d'erreur suivant:
Global name 'Canevas2' is not defined.
En clair: j'ai une def appelée 'Parametrer' dans laquelle je créé une fenêtre 'Parametrage' contenant un canvas et 2 boutons. L'un des boutons appelle une def nommée 'Parametrer_Quitter' afin d'exécuter des trucs en plus de fermer la fenêtre 'Parametrage'. Mais lors du click sur ce bouton, j'obtiens le message d'erreur ci-dessus. C'est un problème de déclaration de variable que je ne comprends pas
Voici mon code:
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
def main():
    pass
 
"""Import des librairies"""
from tkinter import * #librairie graphique
 
def Parametrer():
    """ permettre le parametrage du jeu"""
      #Variables glocales
    int_Param_Beep = IntVar(value=0) # 1: la valeur de la case a cocher
 
    #Creation de la fenetre de parametre
    Fenetre_Param = Tk()
    Fenetre_Param.title('Parametrage')
    Fenetre_Param.configure(background="pink")
 
    # Creation d'un widget Button (bouton Quitter)
    Button(Fenetre_Param, text ='Valider', command = lambda var=int_Param_Beep:Parametrer_Quitter(var)).pack(side=BOTTOM,padx=5,pady=5)
 
    #Creation du canevas
    Canevas2 = Canvas(Fenetre_Param, width = 200, height =300, bg ='white')
    Canevas2.pack()
    #Case aÂ* cocher pour les beeps
    Checkbox_Beep = Checkbutton(Canevas2, text = "Activer/Desactiver le son", variable = int_Param_Beep)
    Checkbox_Beep.pack()
    Checkbox_Beep.select()
 
def Parametrer_Quitter(value):
    """action de quitter la fenetre du parametrage"""
    "Ajouter du code pour generer un BIP"
    "............."
    "la valeur value est toujours egale a 0"
    #Quitter la fenetre de parametrage
    Canevas2.destroy()
 
""" Creation de la fenetre principale"""
Mafenetre = Tk()
Mafenetre.title('MasterMind')
Mafenetre.configure(background="pink")
 
""" Creation d'un widget Canvas contenant le plateau du jeu"""
Canevas = Canvas(Mafenetre, width = 400, height =400, bg ='white')
Canevas.pack()
 
# Creation d'un widget Button (bouton Parametrer)
Button(Mafenetre, text ='Parametrer', command = Parametrer).pack(side=LEFT,padx = 5,pady = 5)
 
# Creation d'un widget Button (bouton Quitter)
Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy).pack(side=LEFT,padx=5,pady=5)
 
Mafenetre.mainloop()