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
| #exercice13.21
from tkinter import *
def cercle(can,x, y, r, coul ='black'):
"tracé d'un cercle de centre (x,y) et de rayon r"
can.create_oval(x-r, y-r, x+r, y+r, outline=coul)
class Application(Frame):
def __init__(self):
"Constructeur de la fenetre principale"
#construction de widget parent
Frame.__init__(self) # appel au constructeur de la classe parente
self.can = Canvas(self,width=400,height=400) #appel canvas
self.can.pack()
self.vis = Visage(self.can) #appel visage
Button(self, text="ouvrir", command=self.vis.ouvrir).pack()
Button(self, text="fermer", command=self.vis.fermer).pack()
self.pack()
class Visage(object):
def __init__(self,canev):
"dessin d'un visage dans un canevas <canev>"
self.canev = canev
cc =[[100, 100, 80, 'red'], # visage
[70, 70, 15, 'blue'], # yeux
[130, 70, 15, 'blue'],
[70, 70, 5, 'black'],
[130, 70, 5, 'black'],
[44, 115, 20, 'red'], # joues
[156, 115, 20, 'red'],
[100, 95, 15, 'purple']]# nez
self.ouvrir()
# on trace tous les cercles à l'aide d'une boucle :
i =0
while i < len(cc): # parcours de la liste
el = cc[i] # chaque élément est lui-même une liste
cercle(self.canev,el[0], el[1], el[2], el[3])
i += 1
def ouvrir(self):
"ouverture de la bouche"
self.canev.delete(self.fermer) #effacement fermer
self.ouvrir = cercle(self.canev,100, 145, 30, 'purple') #dessin ouvrir
def fermer(self):
"fermeture de la bouche"
self.canev.delete(self.ouvrir) #effacement ouvrir
self.fermer = self.canev.create_line(70, 150, 130,150) #dessin fermer
app=Application()
app.mainloop() |
Partager