diff --git a/cave.py b/cave.py index c0f4b03..c0a9f91 100644 --- a/cave.py +++ b/cave.py @@ -1,5 +1,6 @@ import pickle +from tkinter import * class Etageres(object): def __init__(self): @@ -16,7 +17,14 @@ class Etageres(object): self.nbetagere += 1 self.etageres.append(Etagere(largeur, hauteur, self)) - + def generate_windows(self): + self.fenetre=Tk() + for etagere in self.etageres: + etagere.generate_frame(self.fenetre) + + def mainloop(self): + self.fenetre.mainloop() + def nbbouteille(self): i = 0 for etagere in self.etageres: @@ -70,10 +78,10 @@ class Etagere(object): for bouteille in self.bouteilles: if (pos_largeur == bouteille.pos_largeur and pos_hauteur == bouteille.pos_hauteur): self.bouteilles.remove(bouteille) - return "bouteille suprimé" + return ( "bouteille suprimé") else: i += 1 - return "aucune bouteille troucé a cette emplacement" + return ( "aucune bouteille troué a cette emplacement") def __repr__(self): return "etagére numéros {} de largeur {} et de hauteur {} et contient {} bouteille(s) ".format(self.num_etagere, self.largeur, self.hauteur, len(self.bouteilles)) @@ -81,6 +89,49 @@ class Etagere(object): def __iter__(self): return iter(self.bouteilles) + def generate_frame(self,root): + + self.frame=LabelFrame(root,text=self) + for hauteur in range(self.hauteur): + for largeur in range(self.largeur): + isset = False + for bouteille in self: + if (largeur == bouteille.pos_largeur and hauteur == bouteille.pos_hauteur): + bouteille.generate_boutton(self.frame) + isset = True + break + if isset == False: + Cassier_vide(largeur,hauteur,self) + self.frame.grid(row=self.num_etagere) + + + def click_remove_bouteille(self,bouteille): + self.remove_bouteille(bouteille.pos_largeur, bouteille.pos_hauteur) + bouteille.boutton.destroy() + Cassier_vide(bouteille.pos_largeur,bouteille.pos_hauteur,self) + self.frame["text"]=self + + + def click_add_bouteille(self,cassiervide): + + couleur="test" + millesime="0000" + appelation="toto" + newbouteille=Bouteille(cassiervide.pos_largeur, cassiervide.pos_hauteur, couleur, appelation, millesime, self) + self.bouteilles.append(newbouteille) + del cassiervide + newbouteille.generate_boutton(self.frame) + self.frame["text"]=self + +class Cassier_vide(object): + + def __init__(self, pos_largeur, pos_hauteur,etagere): + self.pos_largeur = pos_largeur + self.pos_hauteur = pos_hauteur + self.etagere = etagere + self.boutton=Button(etagere.frame,text="cassier vide",command=lambda:self.etagere.click_add_bouteille(self)) + self.boutton.grid(row=self.pos_hauteur,column=self.pos_largeur) + class Bouteille(object): @@ -97,20 +148,29 @@ class Bouteille(object): self.appelation = appelation self.etagere = etagere - def __repr__(self): - return "bouteille: pos_largeur {} , pos_hauteur {}, couleur {} , appelation {}, millesime {} \n".format(self.pos_largeur, self.pos_hauteur, self.couleur, self.appelation, self.millesime) + def generate_boutton(self,frame): + self.boutton=Button(frame,text=self,command=lambda:self.etagere.click_remove_bouteille(self)) + self.boutton.grid(row=self.pos_hauteur,column=self.pos_largeur) + + + def __repr__(self): + return "appelation {}, millesime {} \n".format(self.appelation, self.millesime) new = Etageres() -new.add_etagere(30, 3) -print(new.etageres[0].add_bouteille(28, 2, "rouge", "saint emilion", 2005)) -print(new.etageres[0].add_bouteille(24, 1, "pisse", "gewurtz", 2010)) -print(new.etageres[0].add_bouteille(23, 2, "rouge", "saint emilion", 2006)) +new.add_etagere(10, 3) +new.add_etagere(4,4) +print(new.etageres[0].add_bouteille(1, 1, "rouge", "saint emilion", 2005)) +print(new.etageres[0].add_bouteille(9, 1, "pisse", "gewurtz", 2010)) +print(new.etageres[0].add_bouteille(5, 2, "rouge", "saint emilion", 2006)) + print(new.etageres[0].bouteilles) + print("vos etagére contiennes {} bouteille".format(new.nbbouteille())) print("vos etagére contiennes {} bouteille de rouge".format( - new.nbbouteillecouleur("rouge"))) -new.save_etageres("test.pkl") +new.nbbouteillecouleur("rouge"))) + print(new.couleur) -print(new.remove_etagere(new.etageres[0])) -del new + +new.generate_windows() +new.mainloop()