VANDEPOELE Enzo
2 years ago
1 changed files with 209 additions and 0 deletions
@ -0,0 +1,209 @@ |
|||
from tkinter import * |
|||
|
|||
fenetre = Tk() |
|||
txt_design = font = ('Helvetica', 12, 'bold', 'underline','italic') |
|||
canvas1 = Canvas(fenetre) |
|||
|
|||
def lancer(k, date, temp_moy, temp_ref, donnees): |
|||
donnees, lst_conso = moyenne_liste() |
|||
donnees_point = [date, temp_moy, temp_ref] |
|||
print(k) |
|||
print(donnees_point) |
|||
print(donnees) |
|||
lst_k_plus_proches = kPlusProches(k, donnees_point, donnees) |
|||
PuissanceMoyenne(lst_k_plus_proches) |
|||
|
|||
def lecture(fichier): |
|||
temp_jour = [] |
|||
with open(fichier, "r") as menu: |
|||
menu.readline() |
|||
for ligne in menu: |
|||
ligne_net = ligne.strip() |
|||
lst_ligne = list(ligne_net.split(";")) |
|||
temp_jour.append(lst_ligne) |
|||
for i in range(len(temp_jour)): |
|||
temp_jour[i][1] = float(temp_jour[i][1]) |
|||
temp_jour[i][2] = float(temp_jour[i][2]) |
|||
temp_jour[i][3] = float(temp_jour[i][3]) |
|||
return temp_jour |
|||
|
|||
def estBissextile(an): |
|||
"""Fonction estBissextile qui prend en paramètre l’année à vérifier et qui renvoie True si elle est bissextile, False sinon""" |
|||
return an % 4 == 0 |
|||
|
|||
def kPlusProches(k,donnees_point,donnees): |
|||
"""Fonction qui prend en paramètre un tuple correspondant au point à vérifier, |
|||
une liste du jeu de données et la conso électrique. Renvoie une liste triée |
|||
en fonction de la distance dont les éléments sont des tuples.""" |
|||
if k > len(donnees): #par sécurité on réduit k |
|||
k = len(donnees) |
|||
voisin=[] |
|||
for i in range(len(donnees)): |
|||
voisin.append(distance(donnees, donnees_point, i)) |
|||
voisin.sort() |
|||
return [voisin[i] for i in range(k)] |
|||
|
|||
|
|||
def numeroJour(date): |
|||
an_mois_jour = list(date.split("-")) |
|||
|
|||
an = int(an_mois_jour[0]) |
|||
mois = int(an_mois_jour[1]) |
|||
jour = int(an_mois_jour[2]) |
|||
|
|||
if mois == 1: |
|||
j_en_plus = 0 |
|||
elif mois == 2: |
|||
j_en_plus = 31 |
|||
elif mois == 3: |
|||
j_en_plus = 59 |
|||
elif mois == 4: |
|||
j_en_plus = 90 |
|||
elif mois == 5: |
|||
j_en_plus = 120 |
|||
elif mois == 6: |
|||
j_en_plus = 151 |
|||
elif mois == 7: |
|||
j_en_plus = 181 |
|||
elif mois == 8: |
|||
j_en_plus = 212 |
|||
elif mois == 9: |
|||
j_en_plus = 243 |
|||
elif mois == 10: |
|||
j_en_plus = 273 |
|||
elif mois == 11: |
|||
j_en_plus = 304 |
|||
elif mois == 12: |
|||
j_en_plus = 334 |
|||
|
|||
if estBissextile(an) and mois > 2: |
|||
j_en_plus += 1 |
|||
|
|||
num_jour = j_en_plus + jour |
|||
if num_jour > 365: |
|||
num_jour = 365 |
|||
return num_jour |
|||
|
|||
def moyenne_liste(): |
|||
temp_jour = lecture("pic-journalier-consommation.csv") |
|||
donnees= [] |
|||
lst_conso = [] |
|||
for i in range(len(temp_jour)): |
|||
temp_jour[i][0] = numeroJour(temp_jour[i][0]) |
|||
donnees.append([temp_jour[i][0], temp_jour[i][2], temp_jour[i][3]]) |
|||
lst_conso.append(temp_jour[i][1]) |
|||
return donnees, lst_conso |
|||
|
|||
def distance(donnees, donneespoint, i): |
|||
"""Fonction qui dit qu'en prenant des points et ben on peut trouver une distance entre 2 point""" |
|||
x1 = donnees[i][0] |
|||
x2 = donneespoint[0] |
|||
d1 = x1-x2 |
|||
d2 = 365 - d1 |
|||
d_final = d1 |
|||
if d1 > d2: |
|||
d_final = d2 |
|||
y1 = donnees[i][1] |
|||
y2 = donneespoint[1] |
|||
z1 = donnees[i][2] |
|||
z2 = donneespoint[2] |
|||
return ((d_final)**2)+((y1-y2)**2)+((z1-z2)**2) |
|||
|
|||
def PuissanceMoyenne(lst_k_plus_proches): |
|||
"""Calcule la moyenne de distances entre les points """ |
|||
lecture("pic-journalier-consommation.csv") |
|||
conso_moy =0 # sum() / len(lst_k_plus_proches) |
|||
return conso_moy |
|||
|
|||
global colour |
|||
global colourselection |
|||
global count |
|||
colour = "" |
|||
colourselection= ['red', 'blue', 'white'] |
|||
count = 0 |
|||
|
|||
def start(parent): |
|||
Tk.after(parent, 1000, change) |
|||
|
|||
def change(): |
|||
global colour |
|||
global colourselection |
|||
global count |
|||
if (count == 1): |
|||
fenetre.configure(bg = 'blue') |
|||
if (count == 2): |
|||
fenetre.configure(bg = 'white') |
|||
if (count == 3): |
|||
fenetre.configure(bg = 'red') |
|||
start(fenetre) |
|||
for i in range (1): |
|||
count = count + 1 |
|||
if count == 4: |
|||
count = 1 |
|||
change() |
|||
|
|||
def recup1(): |
|||
k = 5 |
|||
return k |
|||
|
|||
def recup2(): |
|||
date = 2016 |
|||
return date |
|||
|
|||
def recup3(): |
|||
temp_moy = 34 |
|||
return temp_moy |
|||
|
|||
def recup4(): |
|||
temp_ref = 41 |
|||
return temp_ref |
|||
|
|||
def calc_conso(): |
|||
Conso = conso_moy |
|||
label9.configure(text=Conso) |
|||
|
|||
label1 = Label(fenetre, text="Choisissez le nombre de voisins (k) :", font = |
|||
txt_design, bg ='#005dff', foreground="#ff5733") |
|||
value1 = IntVar() |
|||
entree1 = Entry(fenetre, textvariable=value1) |
|||
|
|||
label2 = Label(fenetre, text="Veuillez entrez la date (format 'aaaa-mm-jj'):", font = |
|||
txt_design, bg ='#005dff', foreground="#ff5733") |
|||
value2 = IntVar() |
|||
entree2 = Entry(fenetre, textvariable=value2) |
|||
|
|||
label3 = Label(fenetre, text="Veuillez entrez la température moyenne (en °C):", font = |
|||
txt_design, bg ='#005dff', foreground="#ff5733") |
|||
value3 = IntVar() |
|||
entree3 = Entry(fenetre, textvariable=value3) |
|||
|
|||
label4 = Label(fenetre, text="Veuillez entrez la température de référence (en °C) :", font = |
|||
txt_design, bg ='#005dff', foreground="#FF5733") |
|||
value4 = IntVar() |
|||
entree4 = Entry(fenetre, textvariable=value4) |
|||
|
|||
label1.grid(pady=10) |
|||
entree1.grid() |
|||
|
|||
label2.grid(pady=10) |
|||
entree2.grid() |
|||
|
|||
label3.grid(pady=10) |
|||
entree3.grid() |
|||
|
|||
label4.grid(pady=10) |
|||
entree4.grid() |
|||
|
|||
label9= Label(fenetre,width=8, text="Conso", bg="#b054da", fg='#fbff7a', font =('calibri',9,'bold') , relief ='groove') |
|||
|
|||
bouton1 = Button(canvas1, text="Tester", command=lancer(recup1(), recup2(), recup3(), recup4(), moyenne_liste()), height=2,width=8 , bg="#e7374c", fg='#fbff7a', font = |
|||
('colibri',13,'bold')).grid() |
|||
|
|||
canvas1.grid(pady = 15) |
|||
label9.grid() |
|||
|
|||
fenetre.title("IHM KNN") |
|||
fenetre.iconbitmap('icon.ico') |
|||
fenetre['bg'] = 'blue' |
|||
fenetre.geometry('400x360') |
|||
fenetre.mainloop() |
Loading…
Reference in new issue