Bonjour,
Tout est là :
Je suppose que je devrai savoir faire ça, puisque l'exercice m'est proposé, mais ce n'est pas le cas.
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 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 :
en sachant que là-dedans, il y a des choses que j'ai recopié sans vraiment les comprendre.
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()
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 "."
Partager