Bonjour,

Je cherche à creer un petit programme de gestion du temps. J'ai crée l'interface et je commence le reste...
Je cherche à faire un refresh de l'heure courante dans self.labHorloge (ligne 19)
Mon probleme c'est que je ne vois pas de quelle façon? Je pensais créer une variable typé StringVar et utiliser la méthode set() mais je ne peux pas boucler sur le constructeur de la classe Application.
Ma question est faut t il faire une boucle dans le programme principal (avec la fonction after() par exemple)? Ou creer une classe Horloge()? Ou dans une nouvelle méthode?
Si quelqu'un peut juste m'orienter, je chercherai pour le code...
Merci

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
68
69
70
71
72
73
74
75
76
77
78
79
80
from tkinter import *
import time
# Module donnant accès aux boîtes de dialogue standard pour
# la recherche de fichiers sur disque :
from tkinter.filedialog import asksaveasfile, askopenfile
 
class Application(Frame):
    '''Fenêtre d'application'''
    def __init__(self):
        Frame.__init__(self)
        self.master.title("Gestion des heures")
        self.dico ={} # création du dictionnaire
        # Les widgets sont regroupés dans deux cadres (Frames) :
        frSup =Frame(self) # cadre supérieur contenant 5 widgets
        Button(frSup, text ="Valider", width =10,
               ).grid(row=1,column =1)
        Label(frSup, text ="Horloge :",
              width =15).grid(row=1,column =2)
        self.labHorloge =Label(frSup, width =30,relief =SUNKEN,
                               text = time.strftime("%A %d %B %Y %H:%M:%S")) # champ d'entrée pour
        self.labHorloge.grid(row=1,column =3) # l'heure
 
        #print(time.strftime("%A %d %B %Y %H:%M:%S"))
 
 
 
 
        Label(frSup, text ="Temps restant :",
              width =15).grid(row=1,column =4)
        self.enCode =Entry(frSup, width =15) # champ d'entrée pour
        self.enCode.grid(row=1,column =5) # le décompte.
        frSup.pack(padx =5, pady =5)
 
        frInf =Frame(self) # cadre inférieur contenant le reste
        self.test = Label(frInf, bg ="white", width =45, # affichage log
               height =7, relief = SUNKEN)
        self.test.pack(pady =5)
        Button(frInf, text ="Arrivé", width =10,
               ).pack(side = LEFT, pady =25)
        Button(frInf, text ="Depart", width =10,
               ).pack(side = LEFT, pady =5)
        Button(frInf, text ="Repas", width =10,
               ).pack(side =RIGHT, pady =5)
        Button(frInf, text ="Pause", width =10,
               ).pack(side =RIGHT, pady =5)
 
 
        frInf.pack(padx =5, pady =5)
        self.pack()
 
 
 
 
 
    def enregistre(self):
        "enregistrer le dictionnaire dans un fichier texte"
        # Cette méthode utilise une boîte de dialogue standard pour la
        # sélection d'un fichier sur disque. Tkinter fournit toute une série
        # de fonctions associées à ces boîtes, dans le module filedialog.
        # La fonction ci-dessous renvoie un objet-fichier ouvert en écriture :
        ofi =asksaveasfile(filetypes=[("Texte",".txt"),("Tous","*")])
        for clef, valeur in list(self.dico.items()):
            ofi.write("{0} {1}\n".format(clef, valeur))
        ofi.close()
 
    def restaure(self):
        "restaurer le dictionnaire à partir d'un fichier de mémorisation"
        # La fonction ci-dessous renvoie un objet-fichier ouvert en lecture :
        ofi =askopenfile(filetypes=[("Texte",".txt"),("Tous","*")])
        lignes = ofi.readlines()
        for li in lignes:
            cv = li.split() # extraction de la clé et la valeur corresp.
            self.dico[cv[0]] = cv[1]
        ofi.close()
 
 
 
 
if __name__ == '__main__':
    Application().mainloop()