Bonjour à toute la troupe !
J'ai essayé de compiler un peu toutes les réponses trouvées sur le sujet, et de les adapter, mais impossible de faire fonctionner ma soluce.
Voici le contexte.
Je suis en train de créer une classe ApplicationDes pour faire un lancer de dés dans une fenêtre. Un curseur permet de choisir le nombre de dés à lancer, et un bouton doit faire le lancer en question. Cette appli est encapsulée dans une classe, donc.
Je bute sur le pb suivant : comment récupérer la valeur du curseur pour qu'elle s'affiche dans le libellé du bouton ?
Je pense que mon code a la bonne structure, et qu'il s'agit d'un bête pb de syntaxe !
Voici la classe en question :
Et voici le message d'erreur obtenu :
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 #_*_ coding: iso-8859-1 _*_ from Tkinter import* class ApplicationDes(Tk) : #constructeur def __init__(self,parent): Tk.__init__(self,parent) self.parent=parent self.initialize() #fonction qui modifie le texte de bouton en fonction de la valeur du curseur def affiche(txt): valeur=curseur.get() bouton.config(text ="Lancez "+str(valeur)+" dés !") #initialisation des widgets def initialize(self) : self.grid() #le curseur pour le nombre de dés self.curseur=Scale(self, length=500, from_=1, to=20, orient=HORIZONTAL, label ='Nombre de dés à lancer',troughcolor ='dark grey', sliderlength =20, tickinterval =1,command=affiche) self.curseur.grid(column=0,row=0,sticky='EW') #le bouton pour lancer les dés bouton=Button(self,text="Lancez les dés !") bouton.grid(column=0,row=1) #auto redimensionnement de la fenêtre self.resizable(True,True) #création d'une application if __name__=="__main__": app = ApplicationDes(None) app.title("Les dés sont jetés !") app.mainloop()
Visiblement, il ne veut pas reconnaître affiche, mais alors là, pourquoi donc ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Traceback (most recent call last): File "C:\Python24\Scripts\des\applicationDes.py", line 41, in -toplevel- app = ApplicationDes(None) File "C:\Python24\Scripts\des\applicationDes.py", line 14, in __init__ self.initialize() File "C:\Python24\Scripts\des\applicationDes.py", line 26, in initialize sliderlength =20, tickinterval =1,command=affiche) NameError: global name 'affiche' is not defined
Merci d'avance pour votre aide, et toutes mes excuses si c'est marqué noir sur blanc quelque part !
Gram'
Partager