Bonjour ,

l'exercice du jour consiste donc à créer un visage simplifié.
Contraintes : il faut créer 2 classes, une pour le "Frame", et une classe Visage()

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
from tkinter import*
 
 
def cercle(can,x,y,r) :
    "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 Application(Frame) :
    def __init__(self) :
        Frame.__init__ (self)
        Visage.__init__(self)
 
        self.can = Canvas(self,width=300,height=300,bg='ivory')
        self.can.pack(side=TOP)
 
        Visage()
 
        Button(self,text='Ferme la',command=Visage.bouche_fermer).pack(side=LEFT)
        Button(self,text='Fait AAAAAA',command=Visage.bouche_ouverte).pack(side=RIGHT)
 
 
 
class Visage(object) :
    "qui dessine des visages simplifiés dans un canevas"
    def __init__(self) :
 
 
        cercle(self.can,150,150,120)    # visage
        cercle(self.can,95,100,25)      # yeux
        cercle(self.can,205,100,25)
        self.bouche = cercle(self.can,150,210,45)
 
 
    def bouche_fermer(self) :
        del self.bouche
        self.bouche = self.can.create_line(100,210,200,210)
 
    def bouche_ouverte(self) :
        del self.bouche
        self.bouche = cercle(self.can,150,210,45)
 
 
#
if __name__ == "__main__" :
    ap = Application()
    ap.mainloop()
le message d'erreur, que je n'arrive pas à régler malgré mes nombreuses tentatives me dit :
ap = Application()
File "F:\Python\Exercices\chapitre 13\13 21.py", line 18, in __init__
Visage.__init__(self)
File "F:\Python\Exercices\chapitre 13\13 21.py", line 35, in __init__
cercle(self.can,150,150,120) # visage
AttributeError: 'Application' object has no attribute 'can'

Pourtant, j'ai bien un self.can dans l'init.
Là je sèche. Je ne sais pas pourquoi il me dit qu'il n'y en a pas.
J'ai bien créé un canevas, j'ai importé VIsage() dans Application(), je l'ai même instancié (je ne sais pas si c'était nécessaire), bref je ne sais pas quoi faire de +