# Horloge de la gare de Saint-Gall

from tkinter import *
import time

def convertit_en_binaire(entier):
    return str(int(bin(entier)[2:]))

def affichage_heures(h):
    base2 = convertit_en_binaire(h)
    while len(base2)<5:
        base2 = '0'+base2
    for i in list(range(5)):
        case_h[i] = Label(canvas, image=o_off)

        if base2[i] == '0':
            case_h[i].configure(image=o_off)
        else:
            case_h[i].configure(image=o_on)
        case_h[i].grid(row=0, column=i+1)
        
def affichage_minutes(m):
    base2 = convertit_en_binaire(m)
    while len(base2)<6:
        base2 = '0'+base2
    for i in list(range(6)):
        case_m[i] = Label(canvas, image=x_off)

        if base2[i] == '0':
            case_m[i].configure(image=x_off)
        else:
            case_m[i].configure(image=x_on)
        case_m[i].grid(row=1, column=i)

def affichage_secondes(s):
    base2 = convertit_en_binaire(s)
    while len(base2)<6:
        base2 = '0'+base2
    for i in list(range(6)):
        case_s[i] = Label(canvas, image=k_off)

        if base2[i] == '0':
            case_s[i].configure(image=k_off)
        else:
            case_s[i].configure(image=k_on)
        case_s[i].grid(row=2, column=i)
        
    
def boucle():
    h,m,s= time.localtime()[3:6] # recupere l'heure, les minutes et les secondes actuelles
    affichage_secondes(s)
    if s==0:  # evite de tout reafficher chaqe seconde
        affichage_minutes(m)
    if m==0:
        affichage_heures(h)
    fenetre.after(990,boucle)  # rate parfois une seconde si on met 1000


#Fenêtre principale            
fenetre = Tk()
fenetre.title("Saint-Gall")

#Cadre principal
case_h=[0,0,0,0,0]
o_on = PhotoImage(file = 'o-on.gif')
o_off = PhotoImage(file = 'o-off.gif')
case_m=[0,0,0,0,0,0]
x_on = PhotoImage(file = 'x-on.gif')
x_off = PhotoImage(file = 'x-off.gif')
case_s=[0,0,0,0,0,0]
k_on = PhotoImage(file = 'k-on.gif')
k_off = PhotoImage(file = 'k-off.gif')


#Canvas incluant l'horloge de Saint-Gall
canvas = Canvas(fenetre,bg='white')
canvas.grid(column=0,row=0,padx=10,pady=10)
h,m,s= time.localtime()[3:6] # recupere l'heure, les minutes et les secondes actuelles
affichage_heures(h)
affichage_minutes(m)
affichage_secondes(s)

boucle()
fenetre.mainloop()
