1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| from tkinter import *
from tkinter.filedialog import asksaveasfile, askopenfile
class Application(Tk):
def __init__(self, boss=None):
Tk.__init__(self)
self.dic = {}
self.title('Dictionnaire de couleurs')
# Affichage de tout le bazar
Label(self, text='Nom de la couleur').grid(row=0, column=0)
Label(self, text='Code hexadécimal').grid(row=1, column=0)
self.entre1 = Entry(self, width =10) # pour la couleur
self.entre2 = Entry(self, width =10) # pour le code hexadécimal
self.entre1.grid(row=0, column=1)
self.entre2.grid(row=1, column=1)
Button(self, text='Tester', command=self.Affiche).grid(row=1, column=3)
self.can = Label(self, bg ="white", width =45, height =7, relief = SUNKEN)
self.can.grid(row=2, column=0, columnspan=4)
Button(self, text='Ajouter la couleur au dictionnaire', command=self.Add).grid(row=3, column=1)
self.but2 = Button(self, text='Enregistrer le dictionnaire', command=self.saveDico)
self.but2.grid(row=3, column=0, columnspan=1)
self.but3 = Button(self, text='Restaurer un dictionnaire', command=self.recupDico)
self.but3.grid(row=3, column=2, columnspan=3)
Button(self, text='Existe déjà ?', command=self.verif).grid(row=0, column=3)
def verif(self):
coul = self.entre1.get()
if coul in self.dic:
self.can.config(bg =self.dic[coul], text ="")
else:
self.can.config(text ="%s : couleur inconnue" % coul, bg='white')
def Add(self):
self.coul, self.code = self.entre1.get().strip(), self.entre2.get().strip()
try:
self.can.configure(bg=self.code, text='')
if len(self.coul)<1:
self.signaleErreur(self.entre1)
self.can.config(text ="Nom incorrect", bg ='white')
else:
self.dic[self.coul] = self.code
except:
self.signaleErreur(self.entre2)
self.can.config(text ="Codage de couleur incorrect", bg ='white')
def Affiche(self):
try:
self.code = self.entre2.get().strip()
self.can.configure(bg=self.code, text='')
except:
self.signaleErreur(self.entre2)
self.can.config(text ="Codage de couleur incorrect", bg ='white')
def signaleErreur(self, entre):
entre.configure(bg ='red')
self.after(1000, self.videEntre(entre))
def videEntre(self, entre):
entre.configure(bg ='white')
entre.delete(0,END)
def signaleErreurB(self, bouton):
bouton.configure(bg='red')
self.after(1000, self.signaleErreurBo(bouton))
def signaleErreurBo(self, bouton):
bouton.configure(bg='light grey')
def recupDico(self):
f1 =askopenfile(filetypes=[("Texte",".txt"),("Tous","*")])
a = f1.read()
f1.close()
a = a.split('\n')
for car in a:
try:
car = car.split('@')
self.dic[car[0]] = car[1]
except:
break
def saveDico(self):
if len(self.dic.keys())>0:
f1 =asksaveasfile(filetypes=[("Texte",".txt"),("Tous","*")])
for clef, valeur in self.dic.items():
f1.write("{}@{}\n".format(clef,valeur))
f1.close()
else:
self.signaleErreurB(self.but2)
self.can.configure(bg=white, text='Aucune donnée dans le dictionnaire')
if __name__ == '__main__':
Application().mainloop() |
Partager