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

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
Show changes
Commits on Source (1)
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 13:36:20 2020
@author: marga
"""
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
boutonLancer = Button(racine, text='Tirage')
boutonLancer.pack(side=LEFT, padx=5, pady=5)
texteResultat = StringVar()
labelResultat = Label(racine, textvariable=texteResultat)
labelResultat.pack(side=LEFT, padx=5, pady=5)
boutonQuitter = Button(racine, text='Quitter')
boutonQuitter.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:15:32 2020
@author: marga
"""
import random
from tkinter import *
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('Tk')
racine.geometry('300x100+400+400')
# Les widgets de la scène
boutonRectangle = Button(racine, text='Rectangle')
boutonRectangle.pack(side=LEFT, padx=5, pady=5)
boutonEllipse = Button(racine, text='Ellipse')
boutonEllipse.pack(side=LEFT, padx=5, pady=5)
boutonCouleur = Button(racine, text='Couleur')
boutonCouleur.pack(side=LEFT, padx=5, pady=5)
boutonQuitter = Button(racine, text='Quitter')
boutonQuitter.pack(side=LEFT, padx=5, pady=5)
# association des commandes aux widgets
boutonQuitter.config(command=racine.destroy) # idem
racine.mainloop() # affichage de l'interface jusqu'à quit
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 14:37:21 2020
@author: marga
"""
from tkinter import *
from formes import *
from tkinter import colorchooser
class ZoneAffichage(Canvas):
def __init__(self, parent, largeur, hauteur):
Canvas.__init__(self, parent, width=largeur, height=hauteur)
self.formeActuelle="Rectangle"
self.__ListeForme=[]
self.couleur='purple'
# self.selection=[]
self.__forme_deplacee=None
def ajout_forme(self,x,y):
if self.formeActuelle=="Rectangle":
f=Rectangle(self, x-5, y-10, 10, 20, self.couleur)
self.__ListeForme.append(f)
else:
f=Ellipse(self,x-5, y-10, 20, 10, self.couleur)
self.__ListeForme.append(f)
# def ajout_rectangle(self,x,y):
# r=Rectangle(self,x-5, y-10, 10, 20, couleur='purple')
# def ajout_ellipse(self,x,y):
# e=Ellipse(self,x-5, y-10, 10, 20, couleur='gold')
def selection_rectangle(self):
self.formeActuelle="Rectangle"
def selection_ellipse(self):
self.formeActuelle="Ellipse"
def delete_forme(self,x,y):
for f in self.__ListeForme:
if f.contient_point(x,y)==True:
f.effacer()
self.__ListeForme.remove(f)
break
def selection_couleur(self):
ask_couleur = colorchooser.askcolor(title ="Choisir la couleur")
self.couleur=ask_couleur[1]
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
# def selection1 (self,x,y):
# for f in self.__ListeForme:
# if f.contient_point(x,y)==True:
# self.selection.append(f)
# self.__ListeForme.remove(f)
# break
# def change_coord(self,new_x,new_y):
# if len(self.selection)!=0:
# f=self.selection[0]
# self.selection.pop()
# f.x=new_x
# f.y=new_y
# self.__ListeForme.append(f)
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)
# Les widgets de la scène
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)
self.__canevas.bind('<Control-ButtonRelease-1>', self.erase_forme)
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)
# self.__canevas.bind('<Button-1>', self.clic_canevas)
# self.__canevas.bind('<B1-Motion>', 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)
# self.__canevas.bind('<Button-1>', self.selection_forme)
# self.__canevas.bind('<ButtonRelease-1>', self.new_coordonnees)
boutonRectangle.config(command=self.__canevas.selection_rectangle)
boutonEllipse.config(command=self.__canevas.selection_ellipse)
boutonCouleur.config(command=self.__canevas.selection_couleur)
def release_canevas(self,event):
self.__canevas.ajout_forme(event.x,event.y)
def erase_forme(self,event):
self.__canevas.delete_forme(event.x,event.y)
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
# def selection_forme(self,event):
# self.__canevas.selection1(event.x,event.y)
# def new_coordonnees(self,event):
# self.__canevas.change_coord(event.x,event.y)
# # association des commandes aux widgets
# boutonRectangle.config(command=self.__canevas.selection_rectangle)
# boutonEllipse.config(command=self.__canevas.selection_ellipse)
# #boutonRectangle.config(command=ajout_forme)
# boutonQuitter.config(command=barreOutils.destroy)
# boutonQuitter.config(command=canevas.destroy)
# barreOutils.mainloop() # affichage de l'interface jusqu'à quit
if __name__ == "__main__":
fen = FenPrincipale()
fen.mainloop()
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 16 14:41:32 2020
@author: marga
"""
class Forme:
def __init__(self, canevas, x, y):
self.__canevas = canevas
self._item = None
self.x = x
self.y = y
def effacer(self):
self.__canevas.delete(self._item)
def deplacement(self, dx, dy):
self.__canevas.move(self._item, dx, dy)
self.x += dx
self.y += dy
class Rectangle(Forme):
def __init__(self, canevas, x, y, l, h, couleur):
Forme.__init__(self, canevas, x, y)
self._item = canevas.create_rectangle(x, y, x+l, y+h, fill=couleur)
self.__l = l
self.__h = h
def __str__(self):
return f"Rectangle d'origine {self.x},{self.y} et de dimensions {self.__l}x{self.__h}"
def get_dim(self):
return self.__l, self.__h
def set_dim(self, l, h):
self.__l = l
self.__h = h
def contient_point(self, x, y):
return self.x <= x <= self.x + self.__l and \
self.y <= y <= self.y + self.__h
def redimension_par_points(self, x0, y0, x1, y1):
self.x = min(x0, x1)
self.y = min(y0, y1)
self.__l = abs(x0 - x1)
self.__h = abs(y0 - y1)
class Ellipse(Forme):
def __init__(self, canevas, x, y, rx, ry, couleur):
Forme.__init__(self, canevas, x, y)
self._item = canevas.create_oval(x-rx, y-ry, x+rx, y+ry, fill=couleur)
self.__rx = rx
self.__ry = ry
def __str__(self):
return f"Ellipse de centre {self.x},{self.y} et de rayons {self.__rx}x{self.__ry}"
def get_dim(self):
return self.__rx, self.__ry
def set_dim(self, rx, ry):
self.__rx = rx
self.__ry = ry
def contient_point(self, x, y):
return ((x - self.x) / self.__rx) ** 2 + ((y - self.y) / self.__ry) ** 2 <= 1
def redimension_par_points(self, x0, y0, x1, y1):
self.x = (x0 + x1) // 2
self.y = (y0 + y1) // 2
self.__rx = abs(x0 - x1) / 2
self.__ry = abs(y0 - y1) / 2
class Forme:
def __init__(self, canevas, x, y):
self.__canevas = canevas
self._item = None
self.x = x
self.y = y
def effacer(self):
self.__canevas.delete(self._item)
def deplacement(self, dx, dy):
self.__canevas.move(self._item, dx, dy)
self.x += dx
self.y += dy
class Rectangle(Forme):
def __init__(self, canevas, x, y, l, h, couleur):
Forme.__init__(self, canevas, x, y)
self._item = canevas.create_rectangle(x, y, x+l, y+h, fill=couleur)
self.__l = l
self.__h = h
def __str__(self):
return f"Rectangle d'origine {self.x},{self.y} et de dimensions {self.__l}x{self.__h}"
def get_dim(self):
return self.__l, self.__h
def set_dim(self, l, h):
self.__l = l
self.__h = h
def contient_point(self, x, y):
return self.x <= x <= self.x + self.__l and \
self.y <= y <= self.y + self.__h
def redimension_par_points(self, x0, y0, x1, y1):
self.x = min(x0, x1)
self.y = min(y0, y1)
self.__l = abs(x0 - x1)
self.__h = abs(y0 - y1)
class Ellipse(Forme):
def __init__(self, canevas, x, y, rx, ry, couleur):
Forme.__init__(self, canevas, x, y)
self._item = canevas.create_oval(x-rx, y-ry, x+rx, y+ry, fill=couleur)
self.__rx = rx
self.__ry = ry
def __str__(self):
return f"Ellipse de centre {self.x},{self.y} et de rayons {self.__rx}x{self.__ry}"
def get_dim(self):
return self.__rx, self.__ry
def set_dim(self, rx, ry):
self.__rx = rx
self.__ry = ry
def contient_point(self, x, y):
return ((x - self.x) / self.__rx) ** 2 + ((y - self.y) / self.__ry) ** 2 <= 1
def redimension_par_points(self, x0, y0, x1, y1):
self.x = (x0 + x1) // 2
self.y = (y0 + y1) // 2
self.__rx = abs(x0 - x1) / 2
self.__ry = abs(y0 - y1) / 2