def resizeImg(self,index,cadre): #redimensionner la taille d'image pour afficher, si l'image est trop grande que le canvas self.cadre=cadre #mettre le canvas dicimg={} img=Image.open(self.listPath[int(index)]) #ovrir l'image wd,hg=img.size mwd=self.screen_width #s'il y a un pb de redimmentsionner l'image, peut être il faut mettre *0.6 mhg=self.screen_height #resize image if wd>mwd : #si largeur de photo est plus grand que le largeur de Canvas scale= 1.0*wd/mwd newImg=img.resize((int(wd/scale),int(hg/scale)),Image.ANTIALIAS) self.cadre.config(width=wd/scale,height=hg/scale) photo = ImageTk.PhotoImage(newImg) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") elif hg > mhg: #si le hauteur de phto est plus grand que le hauteur de Canvas scale = 1.0*hg/mhg newImg = img.resize((int(wd/scale),int(hg/scale)), Image.ANTIALIAS) self.cadre.config(width=wd/scale,height=hg/scale) photo = ImageTk.PhotoImage(newImg) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") else: scale = 1.0 self.cadre.config(width=wd,height=hg) photo = ImageTk.PhotoImage(img) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") #le fichier est changé ou pas, si le fichier current est changé, on supprimera les rectangles qui étaitent affichés et créés if self.currentSelectedFile is None: self.currentSelectedFile=self.listFiles.get(self.listFiles.curselection()) self.fileChange=False else: if self.lastSelectedFile!=self.currentSelectedFile: self.fileChange=True else: self.fileChange=False self.isWinModif=False self.drawRect=rect.CanvasEventsRect(self.cadre,self.listAction,self.listFileWithActionRect,self.currentSelectedFile,self.buttonConfirme,self.buttonDelete,self.fileChange) #les events de souris self.cadre.bind('<ButtonPress-1>', self.drawRect.leftOnStart) self.cadre.bind('<B1-Motion>', self.drawRect.leftOnGrow) self.cadre.bind('<Double-1>', self.drawRect.leftOnClear) self.cadre.bind('<ButtonRelease-1>', self.drawRect.leftOnFinal) #self.cadre.bind('<ButtonPress-3>', self.drawRect.rightOnStart) #self.cadre.bind('<B3-Motion>', self.drawRect.rightOnMove) #self.cadre.bind('<ButtonRelease-3>',self.drawRect.rightOnFinal) gs.update(self.nameProjet,self.numPage) self.scale = scale return scale
def onselect(self,evt): #quand on click dans listbox Files w=evt.widget if len(w.curselection())!=0 : if gs.projetExist(self.nameProjet): gs.update(self.nameProjet,str(int(self.currentIndex)+1)) else : gs.writeInText(self.nameProjet,self.currentIndex+1) self.save() self.lastIndex=self.currentIndex self.currentIndex = int(w.curselection()[0]) self.numPage=self.currentIndex self.recharge() self.resizeImg(self.currentIndex,self.cadre) self.selectAll()
def lastPage(self): #button Précédent self.save() if gs.projetExist(self.nameProjet): gs.update(self.nameProjet,int(self.numPage)-1) else : gs.writeInText(self.nameProjet,int(self.numPage)-1) if int(self.numPage)>0 : self.numPage=int(self.numPage) self.numPage -= 1 self.listFiles.selection_clear(0, tk.END) self.listFiles.selection_set(int(self.numPage)) self.recharge() self.resizeImg(int(self.numPage),self.cadre) self.selectAll()
def nextPage(self): #button Enregister et Suivant #a mettre dans enregister #voir si onSelect se fait tout seul if gs.projetExist(self.nameProjet): gs.update(self.nameProjet,str(int(self.numPage)+1)) else : gs.writeInText(self.nameProjet,self.numPage+1) self.save() if int(self.numPage)<self.listFiles.size() : self.numPage=int(self.numPage) self.numPage += 1 self.listFiles.selection_clear(0, tk.END) self.listFiles.selection_set(int(self.numPage)) self.recharge() self.resizeImg(int(self.numPage),self.cadre) self.selectAll()
def setImageForModif(self,path,cadre): #repeter un peu la fonction de resizeImg, nous pourrons essayer de fusionner les 2 fonctions self.cadre=cadre dicimg={} img=Image.open(path) wd,hg=img.size mwd=self.screen_width mhg=self.screen_height if wd > mwd : scale= 1.0*wd/mwd newImg=img.resize((int(wd/scale),int(hg/scale)),Image.ANTIALIAS) self.cadre.config(width=wd/scale,height=hg/scale) photo = ImageTk.PhotoImage(newImg) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") elif hg > mhg: scale = 1.0*hg/mhg newImg = img.resize((int(wd/scale),int(hg/scale)), Image.ANTIALIAS) self.cadre.config(width=wd/scale,height=hg/scale) photo = ImageTk.PhotoImage(newImg) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") else: scale = 1.0 self.cadre.config(width=wd,height=hg) photo = ImageTk.PhotoImage(img) dicimg['img1'] = photo self.cadre.image=photo self.cadre.create_image(0,0,image=photo,anchor="nw") self.isWinModif=True (path1,path2,nameFile)=path.split('/') self.drawRectModif=rect.CanvasEventsRect(self.cadre,self.listAction,self.listFileWithActionRect,nameFile,self.buttonConfirme,self.buttonDelete) self.cadre.bind('<ButtonPress-1>', self.drawRectModif.leftOnStart) self.cadre.bind('<B1-Motion>', self.drawRectModif.leftOnGrow) self.cadre.bind('<Double-1>', self.drawRectModif.leftOnClear) self.cadre.bind('<ButtonRelease-1>', self.drawRectModif.leftOnFinal) #self.cadre.bind('<ButtonPress-3>', self.drawRectModif.rightOnStart) #self.cadre.bind('<B3-Motion>', self.drawRectModif.rightOnMove) #self.cadre.bind('<ButtonRelease-3>',self.drawRectModif.rightOnFinal) gs.update(self.nameProjet,self.numPage) #retourne scale pour return scale