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() |
Partager