# -*- coding:Utf8 -*-

# Exercice utilisant la bibliothèque graphique Tkinter
 
from tkinter import *

# Fonction externe permettant de tracer un cercle dans un canevas:

def cercle(can, x, y, r, coul ='black'):
    "Tracé d'un cercle de centre (x,y) et de rayon r dans le canevas can"
    can.create_oval(x-r, y-r, x+r, y+r, outline=coul)

# Classe de fenetre graphique permettant d'afficher deux dessins

class Application(Tk):

    def __init__(self):
        Tk.__init__(self)
        self.can = Canvas(self, width =200, height =200, bg ='ivory')
        self.can.pack(side =TOP, padx =5, pady =5)
        bou1 = Button(self, text ='cible', command =self.figure_1)
        bou1.pack(side =LEFT, padx =3, pady =3)
        bou2 = Button(self, text ='visage', command =self.figure_2)
        bou2.pack(side =RIGHT, padx =3, pady =3)
    
    def figure_1(self):
        "Dessiner une cible"
        # Effacer d'abord tout dessin préexistant :
        self.can.delete(ALL)
        # tracer les deux lignes (vert. et horiz.) :
        self.can.create_line(100, 0, 100, 200, fill ='blue')
        self.can.create_line(0, 100, 200, 100, fill ='blue')
        # tracer plusieurs cercles concentriques :
        rayon = 15
        while rayon < 100:
            cercle(self.can, 100, 100, rayon)
            rayon += 15 
     
    def figure_2(self):
        "Dessiner un visage simplifié"
        # Effacer d'abord tout dessin préexistant :
        self.can.delete(ALL)
        # Les caractéristiques de chaque cercle sont
        # placées dans une liste de listes :
        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
             [100, 145, 30, 'purple']]  # bouche
        # 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.can, el[0], el[1], el[2], el[3])
            i += 1

##### Programme principal : ############
    
fen = Application()
fen.mainloop()
