Bonjour,

Je viens tous les jours en ce moment, désolée
tkinter c'est vraiment pas ma tasse de thé (surtout que je préfère le chocolat )

J'ai donc un problème de cas Entry, je voudrai "seulement" afficher dedans le code de la couleur, qui a été préalablement ajouté à un dictionnaire.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
# exo 13.22 : élaboration d'un dictionnaire de couleurs, qui sera une applica-
# tion graphique, avec un certain nombre de champs d'entrée et de boutons.
#
#
from tkinter import *
 
class Dictio_Couleurs(Frame) :
    """Afin d'instancier un dictionnaire contenant les codes hexadécimaux de
quelques couleurs, et le mot français correspondant"""
    def __init__(self) :
        Frame.__init__(self)
        self.dicou = {}
 
        Button(self,text='Ajouter',width=15,command=self.ajouter).grid(row=0,column=1)
        Button(self,text='Interroger',width=15,command=self.afficher).grid(row=1,column=1)
        Button(self,text='Enregistrement',width=15,command=self.enregistrer).grid(row=2,column=1)
        Button(self,text='Chargement',width=15,command=self.reconstruire).grid(row=3,column=1)
        Button(self,text='Quitter',width=15,command=self.quit).grid(row=4,column=1)
 
        self.case_nom = Entry(self,width=25)
        self.case_nom.grid(row=1,column=0)
        self.case_nom.bind('<Return>',self.afficher)
        Label(self,text='Nom de la couleur :').grid(row=0,column=0)
 
        self.var_aff = ''
 
        self.case_code = Entry(self,width=25,textvariable=self.var_aff)
        self.case_code.grid(row=3,column=0)
        Label(self,text='Code hexadécimal de la couleur :').grid(row=2,column=0)
        self.pack()
 
 
    def ajouter(self) :
        if self.case_nom != '' and self.case_code != '' :
            self.dicou[self.case_nom.get()] = self.case_code.get()
 
    def afficher(self) :
        if self.case_nom != '' and self.case_nom.get() in self.dicou :
            self.var_aff(eval(str(self.dicou[self.case_nom.get()]))) 
            print(self.dicou[self.case_nom.get()])
 
    def enregistrer(self) :
        fichier = open('French couleurs','w')
        for nom,couleur in self.dicou.items() :
            fichier.write("{}&{}\n".format(nom,couleur))
 
        fichier.close()
 
 
    def reconstruire(self) :
        fichier = open('French couleurs','r')
        while 1 :
            ch = fichier.readline()
            if ch == '' :
                break
            else :
                nom = ch[:ch.index('&')]
                code = ch[ch.index('&')+1:ch.index('\n')]
                self.dicou[nom] = code
        fichier.close()
 
 
 
if __name__ == "__main__" :
    g = Dictio_Couleurs()
    g.mainloop()
    g.destroy()
Voilà, donc tous mes boutons (et donc les déf qui sont liées) fonctionnent, sauf afficher.
(je sais, pour reconstruire il y avait beaucoup plus simple....peu importe pour l'instant, ça marche)
je n'arrive pas à afficher le code couleur dans la case entry, et je ne sais pas comment m'y prendre.
Là j'ai donc créé une variable, que j'ai mis en textvariable dans la case Entry, et dans la fonction afficher......set ne fonctionnait pas (vu que c'est du string), donc j'ai mis un eval.
Bref, ça ne fonctionne pas.
self.var_aff(eval(str(self.dicou[self.case_nom.get()])))
File "<string>", line 1
#606060
^
SyntaxError: unexpected EOF while parsing


Et c'est vraiment juste l'affichage dans la case, parce que le code que je recherchais c'était bien #606060.
S'il pouvait me le mettre dans la case, au lieu de me l'afficher dans l'erreur