diff --git a/seance4_4h/TD4.py b/seance4_4h/TD4.py new file mode 100644 index 0000000000000000000000000000000000000000..4a9bdf4bc4dc452f1f686a1649d4fc302b8deb67 --- /dev/null +++ b/seance4_4h/TD4.py @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Oct 16 13:40:07 2020 + +@author: MrPam +""" + + +from formes import * +from tkinter import * +from tkinter import colorchooser + + + +class ZoneAffichage(Canvas): + def __init__(self, parent, largeur, hauteur): + Canvas.__init__(self, parent, width=largeur, height=hauteur, bg = 'white') + self.forme_selectionnee = Rectangle + self.formes = [] + self.couleur = '#80ff00' + self.mode = 0 + self.en_deplacement = None + self.x = 0 + self.y = 0 + + + def ajout_forme(self,x,y): + if self.forme_selectionnee == Rectangle : + rect = Rectangle(self,x-5,y-10,10,20,self.couleur) + self.formes += [rect] + elif self.forme_selectionnee == Ellipse : + ell = Ellipse(self,x,y,10,20,self.couleur) + self.formes += [ell] + + + def efface(self,x,y): + liste = self.formes + liste.reverse() + for fig in liste: + if fig.contient_point(x,y) : + fig.effacer() + self.formes.remove(fig) + break + + def changement_mode(self): + self.mode = (1-self.mode) + + def choix_deplacer(self,event): + if self.mode == 1 : + liste = self.formes + liste.reverse() + for fig in liste: + if fig.contient_point(event.x,event.y) : + self.en_deplacement = fig + self.x = event.x + self.y = event.y + + break + def position_courante(self,event): + if self.mode==1 and self.en_deplacement != None : + self.en_deplacement.deplacement(event.x-self.x,event.y-self.y) + self.x = event.x + self.y = event.y + + + + + + + + + def dessine(self,event): + if self.mode == 0 : + self.ajout_forme(event.x,event.y) + + + + + + + def efface_forme(self,event): + self.efface(event.x,event.y) + def pass_rect(self): + self.forme_selectionnee = Rectangle + + def pass_ell(self): + self.forme_selectionnee = Ellipse + + def changement_couleur(self): + self.couleur = colorchooser.askcolor(color=None)[1] + print(self.couleur) + +class FenPrincipale(Tk): + def __init__(self): + Tk.__init__(self) + conteneur = Frame(self, bg = 'white') + conteneur.pack() + boutonRect = Button(conteneur, text='Rectangle') + boutonRect.pack(side=LEFT, padx=5, pady=5) + boutonEll = Button(conteneur, text='Ellipse') + boutonEll.pack(side=LEFT, padx=5, pady=5) + boutonCouleur = Button(conteneur, text='Couleur') + boutonCouleur.pack(side=LEFT, padx=5, pady=5) + boutonMode = Button(conteneur, text='Mode') + boutonMode.pack(side=LEFT, padx=5, pady=5) + boutonQuitter = Button(conteneur, text='Quitter') + boutonQuitter.pack(side=LEFT, padx=5, pady=5) + zone =ZoneAffichage(self,300,400) + zone.pack() + + # L'initialisation de l'arbre de scène se fait ici + + zone.bind('<ButtonRelease-1>',zone.dessine) + zone.bind('<Button-1>',zone.choix_deplacer) + zone.bind('<B1-Motion>',zone.position_courante) + + zone.bind('<Control-ButtonRelease-1>',zone.efface_forme) + + boutonRect.config(command=zone.pass_rect) + boutonEll.config(command=zone.pass_ell) + boutonCouleur.config(command = zone.changement_couleur) + boutonMode.config(command = zone.changement_mode) + + + +if __name__ == "__main__": + fen = FenPrincipale() + + + + + + + + + + + fen.mainloop()