# -*- encoding:Utf8 -*-

# Adaptation de l'exemple d'un tracé de lignes dans un canevas

from tkinter import *
from random import randrange

class Application(Tk):

    # attribut de classe accessible par tous les objects de la classe Application
    palette = ['cyan', 'maroon', 'green']
   
    def __init__(self):
        Tk.__init__(self)       # constructeur de la classe parente

        # coordonnées de la prochaine ligne:
        self.x1, self.y1, self.x2, self.y2 = 0, 640, 500, 640
        # couleur de la prochain ligne:
        self.coul = 'dark green'

        # création des widgets 'esclaves':
        # canevas:
        self.can = Canvas(master=self, bg='dark grey', height=650, width=500)
        self.can.pack(side=LEFT)
        # boutons:
        bou1 = Button(self, text='Quitter', command=self.quit)
        bou1.pack(side=BOTTOM)
        bou2 = Button(self, text='Tracer une ligne', command = self.drawline)
        bou2.pack()
        bou3 = Button(self, text='Autre couleur', command = self.changecolor)
        bou3.pack()
        bou4 = Button(self, text='Tracer une croix', command = self.drawcross)
        bou4.pack()

    # définitions des méthodes gestionnaires d'événements:

    def drawline(self):
        "Tracé d'une ligne dans le canevas self.can"
        
        self.can.create_line(self.x1, self.y1, self.x2, self.y2, fill=self.coul)
        # modification des coordonnées pour la ligne suivante:
        self.y1, self.y2 = self.y1-10, self.y2-10

    def drawcross(self):
        "Tracé d'une croix centré au milieu du canevas self.can"

        self.can.create_line(0, 325, 500, 325, fill='red', width=10)
        self.can.create_line(250, 0, 250, 650, fill='red', width=10)
        

        

    def changecolor(self):
        "Changement aléatoire de la couleur du tracé"

        c= randrange(len(Application.palette))     # => génère un nombre aléatoire de 0 à longueur(palette)-1
        self.coul = Application.palette[c]
        

#------ Corps principal du programme -------

fen = Application()     # Création d'une instance de la classe Application

fen.mainloop()          # Démarrage du réceptionnaire d'événements hérité de la classe parente

fen.destroy()           # Destruction (fermeture) de la fenetre
