Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #======================================================
- # Generateur de motifs de point de croix
- # cspg.py
- # Ecrit par G.D. Walters
- # Cree pour Full Circle Magazine numeros 85, 86, 87, 88
- # FCM 86 - Partie 55 - Interface graphique
- #======================================================
- from Tkinter import *
- import tkFileDialog
- import tkCommonDialog
- import tkMessageBox
- import ttk
- from PIL import Image,ImageTk,ImageOps
- import Pmw
- import apsw # acces a la base de donnees
- import math # bibliotheque mathematique
- import sys
- class XStitch:
- def __init__(self, principal):
- self.formatsImages = [
- ('JPEG / JFIF','*.jpg'),
- ('Portable Network Graphics','*.png'),
- ('CompuServer GIF','*.gif'),
- ('Windows Bitmap','*.bmp'),
- ('Tous les types *.*','*.*'),
- ]
- self.openimage = PhotoImage(file='open.gif')
- self.DefaultImage =ImageTk.PhotoImage(self.Apercu("default.jpg",450,450))
- #-------------------------------------------
- # Definitions globales
- #-------------------------------------------
- # pour l'interface graphique
- global NomFichierOriginal
- NomFichierOriginal = StringVar()
- global NombreCouleursOriginal
- NombreCouleursOriginal = StringVar()
- global TailleOriginal
- TailleOriginal = StringVar()
- global ComboTaillePoints
- ComboTaillePoints = IntVar()
- global ComboTaille
- ComboTaille = StringVar()
- global LargeurTissu
- LargeurTissu = DoubleVar()
- global HauteurTissu
- HauteurTissu = DoubleVar()
- global MaxCouleurs
- MaxCouleurs = IntVar()
- global TailleBordure
- TailleBordure = DoubleVar()
- global CouleursTraitees
- CouleursTraitees = StringVar()
- global TailleTraitee
- TailleTraitee = StringVar()
- global CouleurDMC
- CouleurDMC = StringVar()
- #-------------------------------------------
- global AfficherGrille
- AfficherGrille = True
- global ImageTraitee
- ImageTraitee = ""
- global GrilleImage
- GrilleImage = ""
- global couleurFond1
- couleurFond1 = (120,)*3
- global couleurFond2
- couleurFond2 = (0,)*3
- global PretPourTraitement
- PretPourTraitement = False
- #-------------------------
- self.OuvrirBase()
- self.FabriquerMenu(principal)
- frm = self.ConstruireWidgets(principal)
- self.PlacerWidgets(frm)
- #======================================================
- # DEBUT DEFINITION INTERFACE
- #======================================================
- def FabriquerMenu(self,principal):
- menu = Menu(principal)
- racine.config(menu=menu)
- menuFichier = Menu(menu, tearoff=0)
- Traitement = Menu(menu,tearoff=0)
- Aide = Menu(menu,tearoff=0)
- menu.add_cascade(label="Fichier", menu=menuFichier)
- menu.add_cascade(label="Traitement",menu=Traitement)
- menu.add_cascade(label="Aide",menu=Aide)
- #-------------------------------------------
- # Menu Fichier
- #-------------------------------------------
- menuFichier.add_command(label="Nouveau")
- menuFichier.add_command(label="Ouvrir", command=self.RecupererNomFichier)
- menuFichier.add_command(label="Sauver", command=self.SauverFichier)
- menuFichier.add_separator()
- menuFichier.add_command(label="Quitter", command=self.Quitter)
- #-------------------------------------------
- # Menu Traitement
- #-------------------------------------------
- Traitement.add_command(label="Tous",command=self.Traitement)
- #-------------------------------------------
- # Menu Aide
- #-------------------------------------------
- Aide.add_command(label="Aide",command=self.AfficherAide)
- Aide.add_separator()
- Aide.add_command(label="A propos",command=self.AfficherApropos)
- def ConstruireWidgets(self,principal):
- self.frame = Frame(principal,width=900,height=850)
- # ---------------- FENETRE HAUT ---------------------
- self.frm1 = Frame(self.frame,width=900,height=100,bd=4,relief=GROOVE)
- self.label1 = Label(self.frm1,text = "Fichier original : ")
- self.entNomFic = Entry(self.frm1,width=50,textvariable=NomFichierOriginal)
- self.btnNomFic = Button(self.frm1,width=28,image=self.openimage,command=self.RecupererNomFichier)
- self.label2 = Label(self.frm1,text = "Nb couleurs de l'original : ")
- self.lblNombreCouleursOriginal = Label(self.frm1,text="",width=10,textvariable=NombreCouleursOriginal)
- self.label3 = Label(self.frm1,text = "Taille de l'original : ")
- self.lblTailleOriginal = Label(self.frm1,text="",width=10,textvariable=TailleOriginal)
- # --------------- FENETRE MILIEU --------------------
- self.frm2 = Frame(self.frame,width=900,height=160,bd=4,relief=GROOVE)
- self.lbl4 = Label(self.frm2,text="Taille des points de l'aida : ")
- self.lbl5 = Label(self.frm2,text="Taille du tissu Aida : ")
- self.TCombobox1 = ttk.Combobox(self.frm2,textvariable=ComboTaillePoints,width=8)
- self.TCombobox1.bind('<<ComboboxSelected>>', self.ChoixTaillePoints)
- self.TCombobox1['values'] = (7,10,11,12,14,16,18,22)
- self.TCombobox2 = ttk.Combobox(self.frm2,textvariable=ComboTaille,width = 8)
- self.TCombobox2.bind('<<ComboboxSelected>>',self.ChoixTailleAida)
- self.TCombobox2['values'] = ("12x18","15x18","30")
- self.lbl6 = Label(self.frm2,text="Nb max de couleurs : ")
- self.entMaxCouleurs = Entry(self.frm2,textvariable=MaxCouleurs,width=3)
- self.lbl7 = Label(self.frm2,text="Taille bordure : ")
- self.entTailleBordure = Entry(self.frm2,textvariable=TailleBordure,width = 8)
- self.frmLine = Frame(self.frm2,width=6,height=80,bd=3,relief="raised")
- self.lbl8 = Label(self.frm2,text="Couleurs traitees : ")
- self.lbl9 = Label(self.frm2,text="Nb points traites : ")
- self.lblCouleursTraitees=Label(self.frm2,width=10,textvariable=CouleursTraitees,justify=LEFT)
- self.lblTailleTraitee=Label(self.frm2,width=10,textvariable=TailleTraitee,justify=LEFT)
- self.btnDoIt = Button(self.frm2,text="Traitement",width=11,command = self.Traitement)
- self.btnAfficherGrille = Button(self.frm2,text="Masquer grille",width=11,command=self.AfficherMasquerGrille)
- self.btnCreerPDF=Button(self.frm2,text="Creer PDF",width=11,command=self.CreerPDF)
- ComboTaillePoints.set(14)
- ComboTaille.set("15x18")
- LargeurTissu.set(15)
- HauteurTissu.set(18)
- MaxCouleurs.set(50)
- TailleBordure.set(1.0)
- # --------------- FENETRE BAS -----------------------
- self.frm3 = Frame(self.frame,width=450,height=450,bd=4,relief=GROOVE)
- self.lblImageL = Label(self.frm3,image=self.DefaultImage,height=400,width=400,borderwidth=2,relief=GROOVE)
- self.lblImageR = Label(self.frm3,image=self.DefaultImage,height=400,width=400,borderwidth=2,relief=GROOVE)
- #---------------- FENETRE COTE ----------------------
- self.frm4 = Frame(self.frame,width = 300,height=580,bd=4,relief=GROOVE)
- # Cree la fenetre deroulante
- self.sf = Pmw.ScrolledFrame(self.frm4,
- labelpos = 'n', label_text = 'Liste couleurs traitees',
- usehullsize = 1,
- hull_width = 300,
- hull_height = 567,)
- return self.frame
- def PlacerWidgets(self,fenetre):
- fenetre.grid(column = 0, row = 0)
- # ---------------- FENETRE HAUT ---------------------
- self.frm1.grid(column=0,row=0,rowspan=2,sticky="new")
- self.label1.grid(column=0,row=0,sticky='w')
- self.entNomFic.grid(column=1,row=0,sticky='w',columnspan = 5)
- self.btnNomFic.grid(column=7,row = 0,sticky='w')
- self.label2.grid(column=9,row=0,sticky='w',padx=10)
- self.lblNombreCouleursOriginal.grid(column=10,row=0,sticky='w')
- self.label3.grid(column=9,row=1,sticky='w',padx=10,pady=5)
- self.lblTailleOriginal.grid(column=10,row=1,sticky='w')
- # ---------------- FENETRE MILIEU -------------------
- self.frm2.grid(column=0,row=2,rowspan=2,sticky="new")
- self.lbl4.grid(column=0,row=0,sticky="new",pady=5)
- self.lbl5.grid(column=0,row=1,sticky="new")
- self.TCombobox1.grid(column=1,row=0,sticky="new",pady=5)
- self.TCombobox2.grid(column=1,row=1,sticky="new")
- self.lbl6.grid(column=2,row = 0,sticky="new",padx=5,pady=5)
- self.entMaxCouleurs.grid(column=3,row=0,sticky="new",pady=5)
- self.lbl7.grid(column=2,row=1,sticky='new',padx=5)
- self.entTailleBordure.grid(column=3,row=1,sticky='new')
- self.frmLine.grid(column=4,row=0,rowspan=2,sticky='new',padx=15)
- self.lbl8.grid(column=5,row=0,sticky='new',pady=5)
- self.lbl9.grid(column=5,row=1,sticky='new')
- self.lblCouleursTraitees.grid(column=6,row=0,sticky='w')
- self.lblTailleTraitee.grid(column=6,row=1,sticky='new')
- self.btnDoIt.grid(column=7,row=0,sticky='e',padx=5,pady = 5)
- self.btnAfficherGrille.grid(column=7,row=1,sticky='e',padx=5,pady = 5)
- self.btnCreerPDF.grid(column=8,row=0,rowspan=2,sticky='ew',padx=10)
- # ---------------- FENETRE BAS ----------------------
- self.frm3.grid(column=0,row=4,sticky="nsew")
- self.lblImageL.grid(column=0,row=0,sticky="w")
- self.lblImageR.grid(column=1,row=0,sticky="e")
- # ---------------- FENETRE COTE ---------------------
- self.frm4.grid(column=2,row=0,rowspan=12,sticky="new")
- self.sf.grid(column=0,row=1)
- self.sfFrame = self.sf.interior()
- self.lblch1 = Label(self.sfFrame,text=" Original")
- self.lblch2 = Label(self.sfFrame,text=" DMC")
- self.lblch3 = Label(self.sfFrame,text="Nom/Numero")
- self.lblch1.grid(column=0,row=0,sticky='w')
- self.lblch2.grid(column=1,row=0,sticky='w')
- self.lblch3.grid(column=2,row=0,sticky="w")
- #======================================================
- # FIN DEFINITION INTERFACE
- #======================================================
- def RecupererNomFichier(self):
- pass
- def SauverFichier(self):
- pass
- def AfficherAide(self):
- pass
- def AfficherApropos(self):
- pass
- def Quitter(self):
- sys.exit()
- def OuvrirBase(self):
- pass
- def AfficherMasquerGrille(self):
- pass
- def ChoixTaillePoints(self,p):
- pass
- def ChoixTailleAida(self,p):
- pass
- def Traitement(self):
- pass
- def CreerPDF(self):
- pass
- #======================================================
- # Fonctions de traitement
- #======================================================
- def Apercu(self,fichier,tailleH,tailleV):
- taille = tailleH,tailleV
- posExt = fichier.rfind(".")
- fichierSortie = fichier[:posExt] + ".thumbnail"
- im = Image.open(fichier)
- im.thumbnail(taille)
- im.save(fichierSortie,"JPEG")
- return im
- def InfoOriginal(self,fichier):
- pass
- def RecupererNbCouleurs(self,fichier):
- pass
- def RecupererHauteurLargeur(self,fichier):
- pass
- def RecupererHauteurLargeur2(self,fichier):
- pass
- def RecupererCouleurs(self,image):
- pass
- def Pixeliser(self,im,taillePixel):
- pass
- def ReduireCouleurs(self,NomImage):
- pass
- def DessinerLignes(self,im,taillePixel):
- pass
- def DessinerLignes2(self,im,taillePixel):
- pass
- def Rgb2Hex(self,rgb):
- pass
- def RemplirListeDeroulante(self,nomFic):
- pass
- def TrouverMeilleureDistance(self,r1,g1,b1):
- # dist = math.sqrt(((r1-r2)**2) + ((g1-g2)**2) + ((b1-b2)**2))
- pass
- racine = Tk()
- racine.title("Generateur de motifs de point de croix")
- test = XStitch(racine)
- racine.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement