Bonjour,

Tout est là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
# exo 13.20 : écrivez une petite application qui fait apparaître une fenêtre
# avec un canevas et un widget curseur(Scale). Dans le canevas, dessinez un 
# cercle, dont l'utilisateur pourra faire varier la taille à l'aide du curseur.
Je suppose que je devrai savoir faire ça, puisque l'exercice m'est proposé, mais ce n'est pas le cas.
Je commence à me demander si j'ai vraiment les capacités nécessaires pour apprendre à programmer. En clair, je ne suis pas loin de me décourager.
J'ai quand même tenté...ceci :
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
from tkinter import*
 
 
def cercle(can,x,y,r) :
    "fonction qui permet de dessiner un cercle de centre x,y et de rayon r"
    can.create_oval(x-r,y-r,x+r,y+r)
 
class Rond(Frame) :
    "classe qui permet d'instancier des ronds"
    def __init__(self,larg=400,haut=400) :
        Frame.__init__(self)
        self.curs = Scale(self,length=300,orient=HORIZONTAL,label='Rayon :',
              troughcolor='pink',sliderlength=25,showvalue=0,from_=50,
              to=400,tickinterval=25,command=self.valeur)
        self.curs.pack(side=BOTTOM)
 
        self.can = Canvas(self,bg='ivory',width=larg,height=haut)
        self.can.pack()
 
        self.larg,self.haut = larg,haut
        self.x,self.y = self.larg/2,self.haut/2
 
        self.master.bind('<Control-M>',self.dessine)
        self.pack()
 
 
    def dessine(self) :
        "pour dessiner un cercle dans le canevas"
 
        self.r = self.valeur
        self.can.delete('ALL')
        self.cer = cercle(self.can,self.x,self.y,self.r)
 
 
    def valeur(self,event) :
        """méthode qui récupère la valeur du rayon définie par l'utilisateur
à l'aide du curseur"""
        self.r = int(r)
        self.event_generate('<Control-M>')
 
 
 
 
## Test Programme ##
 
if __name__ == "__main__" :
    root = Tk()
    ce = Rond(root)
 
 
    ce.mainloop()
en sachant que là-dedans, il y a des choses que j'ai recopié sans vraiment les comprendre.
Bref. Donc à mon avis déjà, il faudrait "prendre" la valeur fixée par l'utilisateur, mais je ne sais pas comment on fait ça.
J'ai tenté d'exécuter le code pour essayer, selon les codes erreurs qu'il me donne, de trouver progressivement les solutions, mais là j'ai une erreur que je n'ai jamais eu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 File "F:/Python/Exercices/chapitre 13/13 20.py", line 51, in <module>
    ce = Rond(root)
  File "F:/Python/Exercices/chapitre 13/13 20.py", line 21, in __init__
    self.can = Canvas(self,bg='ivory',width=larg,height=haut)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2405, in __init__
    Widget.__init__(self, master, 'canvas', cnf, kw)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2299, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: bad screen distance "."