Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • rvuillem/INF-TC2
  • teixeira/INF-TC2
  • mdemeill/INF-TC2
  • epelous/INF-TC2
  • rgayet/INF-TC2
  • gparamuc/INF-TC2
  • pdewilde/INF-TC2
  • bnegre/INF-TC2
  • elichiya/INF-TC2
  • amacgreg/INF-TC2
  • yjaid/INF-TC2
  • lcholley/INF-TC2
  • hwei/INF-TC2
  • lmelodef/INF-TC2
  • mnauche/INF-TC2
  • nbernier/INF-TC2
  • gbouvier/INF-TC2
  • lalbin/INF-TC2
  • jdelaffo/INF-TC2
  • ndjaoud/INF-TC2
20 results
Select Git revision
Loading items
Show changes
Commits on Source (1)
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 13:40:59 2020
@author: gabip
"""
import random
from tkinter import *
def tirage():
nb = random.randint(1, 100)
texteResultat.set('Nombre : ' + str(nb))
if __name__ == '__main__':
# création de l'arbre de scène
racine = Tk() # Appel à une méthode de classe (et non un constructeur, cf slide cours #2)
racine.title('Tirage aléatoire')
racine.geometry('300x100+400+400')
# Les widgets de la scène
boutonQuitter = Button(racine, text='Quitter')
boutonQuitter.pack(side=LEFT, padx=5, pady=5)
texteResultat = StringVar()
labelResultat = Label(racine, textvariable=texteResultat)
labelResultat.pack(side=LEFT, padx=10, pady=10)
boutonLancer = Button(racine, text='Tirage')
boutonLancer.pack(side=LEFT, padx=5, pady=5)
# association des commandes aux widgets
boutonLancer.config(command=tirage) # appel dit callback (pas de parenthèses)
boutonQuitter.config(command=racine.destroy) # idem
racine.mainloop() # affichage de l'interface jusqu'à quit
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 14:35:07 2020
@author: gabip
"""
from tkinter import *
from formes import *
from tkinter.colorchooser import askcolor
class ZoneAffichage(Canvas):
def __init__(self, parent, largeur, hauteur):
Canvas.__init__(self, parent, width=largeur, height=hauteur)
self.forme_actuelle = 'Rectangle'
self.__ListeFormes=[]
self.__forme_deplacee = None
def ajout_forme(self,x,y):
if self.forme_actuelle == 'Rectangle':
f= Rectangle(self,x, y ,20 ,10,'brown')
self.__ListeFormes.append(f)
else:
f= Ellipse(self,x,y,25,25,'brown')
self.__ListeFormes.append(f)
def selection_rectangle(self):
self.forme_actuelle='Rectangle'
def selection_ellipse(self):
self.forme_actuelle='Ellipse'
def effacer(self,x,y):
for i in self.__ListeFormes:
if i.contient_point(x,y)==True:
i.effacer()
self.__ListeFormes.remove(i)
break
def color(self):
couleur=askcolor()[1]
for f in self.__ListeFormes:
f.change_couleur(couleur)
class FenPrincipale(Tk):
def __init__(self):
Tk.__init__(self)
# L'initialisation de l'arbre de scène se fait ici
self.configure(bg='grey')
BarreOutils = Frame(self)
BarreOutils.pack(side=TOP)
boutonRectangle = Button(BarreOutils, text='Rectangle')
boutonRectangle.pack(side=LEFT, padx=5, pady=5)
boutonEllipse = Button(BarreOutils, text='Ellipse')
boutonEllipse.pack(side=LEFT, padx=5,pady=5)
boutonCouleur = Button(BarreOutils, text='Couleur')
boutonCouleur.pack(side=LEFT, padx=5,pady=5)
boutonQuitter = Button(BarreOutils, text='Quitter')
boutonQuitter.pack(side=LEFT, padx=5,pady=5)
self.__canevas = ZoneAffichage(self,600,400)
self.__canevas.pack(side=TOP, padx=10, pady=10)
self.__canevas.bind('<ButtonRelease-1>',self.release_canevas)
boutonRectangle.config(command=self.__canevas.selection_rectangle)
boutonEllipse.config(command=self.__canevas.selection_ellipse)
self.__canevas.bind('<Control-Button-1>',self.ctrlclick)
boutonCouleur.config(command=self.__canevas.color)
self.__canevas.bind('<Button-1>',self.clic_canevas)
def release_canevas(self,event):
self.__canevas.ajout_forme(event.x,event.y)
def ctrlclick(self,event):
self.__canevas.effacer(event.x,event.y)
def clic_canevas(self,event):
pass
if __name__ == "__main__":
fen = FenPrincipale()
fen.mainloop()
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 16:03:01 2020
@author: gabip
"""
def choixrect():
self.__selection='Rectangle'
def choixellipse():
self.__selection='Ellipse'
class FenPrincipale(Tk):
def __init__(self):
Tk.__init__(self)
# L'initialisation de l'arbre de scène se fait ici
self.configure(bg='grey')
BarreOutils = Frame(self)
BarreOutils.pack(side=TOP)
boutonRectangle = Button(BarreOutils, text='Rectangle',command=choixrect)
boutonRectangle.pack(side=LEFT, padx=5, pady=5)
boutonEllipse = Button(BarreOutils, text='Ellipse',command=choixellipse)
boutonEllipse.pack(side=LEFT, padx=5,pady=5)
boutonCouleur = Button(BarreOutils, text='Couleur')
boutonCouleur.pack(side=LEFT, padx=5,pady=5)
boutonQuitter = Button(BarreOutils, text='Quitter')
boutonQuitter.pack(side=LEFT, padx=5,pady=5)
self.__canevas = ZoneAffichage(self,600,400)
self.__canevas.pack(side=TOP, padx=10, pady=10)
if self.__selection=='Rectangle':
self.__canevas.bind('<ButtonRelease-1>',self.release_canevas)
if self.__selection=='Ellipse':
self.canevas.bind('<ButtonRelease-1>',self.release_canevas2)
def release_canevas(self,event):
self.__canevas.ajout_forme(event.x,event.y)
def release_canevas2(self,event):
self.__canevas.ajout_forme2(event.x,event.y)
if __name__ == "__main__":
fen = FenPrincipale()
fen.mainloop()
......@@ -19,6 +19,10 @@ class Rectangle(Forme):
self._item = canevas.create_rectangle(x, y, x+l, y+h, fill=couleur)
self.__l = l
self.__h = h
self.__couleur = couleur
def change_couleur(self,c):
self.__couleur = c
def __str__(self):
return f"Rectangle d'origine {self.x},{self.y} et de dimensions {self.__l}x{self.__h}"
......@@ -46,6 +50,10 @@ class Ellipse(Forme):
self._item = canevas.create_oval(x-rx, y-ry, x+rx, y+ry, fill=couleur)
self.__rx = rx
self.__ry = ry
self.__couleur = couleur
def change_couleur(self,c):
self.__couleur = c
def __str__(self):
return f"Ellipse de centre {self.x},{self.y} et de rayons {self.__rx}x{self.__ry}"
......
from tkinter import *
from tkinter import colorchooser # doit être importé manuellement
from formes import *
class ZoneAffichage(Canvas):
def __init__(self, master, largeur, hauteur):
Canvas.__init__(self, master, width=largeur, height=hauteur)
self.__formes = []
self.__type_forme = 'rectangle'
self.__couleur = 'brown'
self.__forme_deplacee = None
def selection_rectangle(self):
self.__type_forme = 'rectangle'
def selection_ellipse(self):
self.__type_forme = 'ellipse'
def selection_couleur(self):
self.__couleur = colorchooser.askcolor()[1]
def ajout_forme(self, x, y):
# Notez qu'on aurait aussi pu ajouter ce code en méthodes de Rectangle/Ellipse.
if self.__type_forme == 'rectangle':
f = Rectangle(self, x-5, y-10, 10, 20, self.__couleur)
elif self.__type_forme == 'ellipse':
f = Ellipse(self, x, y, 5, 10, self.__couleur)
self.__formes.append(f)
def suppression_forme(self, x, y):
try:
i = next(i for i in range(len(self.__formes)-1, -1, -1)
if self.__formes[i].contient_point(x, y))
f = self.__formes.pop(i) # on retire la forme de la liste
f.effacer() # puis on l'efface du canevas
except:
pass
def deplacement_forme(self, x0, y0, x1, y1):
try:
if self.__forme_deplacee == None:
self.__forme_deplacee = next(f for f in reversed(self.__formes)
if f.contient_point(x0, y0))
self.__forme_deplacee.deplacement(x1 - x0, y1 - y0)
except:
pass
def fin_deplacement(self):
self.__forme_deplacee = None
class FenPrincipale(Tk):
def __init__(self):
Tk.__init__(self)
# arbre de scène
self.configure(bg="grey")
barreOutils = Frame(self)
barreOutils.pack(side=TOP)
boutonRectangle = Button(barreOutils, text="Rectangle")
boutonRectangle.pack(side=LEFT, padx=5, pady=5)
boutonEllipse = Button(barreOutils, text="Ellipse")
boutonEllipse.pack(side=LEFT, padx=5, pady=5)
boutonCouleur = Button(barreOutils, text="Couleur")
boutonCouleur.pack(side=LEFT, padx=5, pady=5)
boutonQuitter = Button(barreOutils, text="Quitter")
boutonQuitter.pack(side=LEFT, padx=5, pady=5)
self.__canevas = ZoneAffichage(self, 600, 400)
self.__canevas.pack(side=TOP, padx=10, pady=10)
# commandes
boutonRectangle.config(command=self.__canevas.selection_rectangle)
boutonEllipse.config(command=self.__canevas.selection_ellipse)
boutonCouleur.config(command=self.__canevas.selection_couleur)
boutonQuitter.config(command=self.destroy)
self.__canevas.bind("<Button-1>", self.clic_canevas)
self.__canevas.bind("<Control-ButtonRelease-1>", self.control_clic_canevas)
self.__deplacement_en_cours = False
self.__dernier_x = 0
self.__dernier_y = 0
self.__canevas.bind("<ButtonRelease-1>", self.release_canevas)
self.__canevas.bind("<B1-Motion>", self.drag_canevas)
def clic_canevas(self, event):
self.__dernier_x = event.x
self.__dernier_y = event.y
def control_clic_canevas(self, event):
self.__canevas.suppression_forme(event.x, event.y)
def release_canevas(self, event):
if not self.__deplacement_en_cours:
self.__canevas.ajout_forme(event.x, event.y)
else:
self.__canevas.fin_deplacement()
self.__deplacement_en_cours = False
def drag_canevas(self, event):
self.__canevas.deplacement_forme(self.__dernier_x, self.__dernier_y, event.x, event.y)
self.__deplacement_en_cours = True
self.__dernier_x = event.x
self.__dernier_y = event.y
if __name__ == '__main__':
fen = FenPrincipale()
fen.mainloop()