Bonjour,
Encore un problème de déclaration de variable.
j'ai une def 'Parametrer' qui définit une fenêtre 'Parametrage' incluant un canvas, une checkbutton et 2 buttons.
l'un des boutons appelle une autre def pour récupérer la valeur de la checkbutton en plus de fermer la fenêtre 'Parametrage'.
j'obtiens le message d'erreur suivant indiquant que ma variable de sortie de la checkbutton n'est pas définie:
global name 'int_Param_Beep' is not defined

J'ai fait plusieurs essais en vain, j'ai aussi regardé les questions autour de ce sujet dans le forum mais cela ne part jamais de 2 def différentes.
voici mon code contenant les différents essais en commentaire:
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
def main():
    pass
"""Import des librairies"""
from tkinter import * #librairie graphique
#global int_Param_Beep
#int_Param_Beep = IntVar()
 
""" utilisation des Logs de la console python"""
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
steam_handler = logging.StreamHandler()
steam_handler.setLevel(logging.DEBUG)
logger.addHandler(steam_handler)
logger.info('Programme demarre')
 
#int_Param_Beep = IntVar(value=0) # 1: la valeur de la case a cocher
def Parametrer():
    """ permettre le parametrage du jeu"""
      #Variables locales
    int_Param_Beep = IntVar(value=0) # 1: la valeur de la case lorsqu elle est cochee
 
    #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=Fenetre_Param: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"""
    global int_Param_Beep
    "Ajouter du code pour generer un BIP"
    "............."
    "la valeur value est toujours egale a 0"
    logger.info('afficher la valeur de la case a cocher : %s', int_Param_Beep)
 
    #Quitter la fenetre de parametrage
    value.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()