From 8694bcf6d0ebcd11ec46921401d9a8d01b37eb3c Mon Sep 17 00:00:00 2001 From: ambre Date: Fri, 14 Mar 2025 16:38:32 +0100 Subject: [PATCH] bodycount --- sanstitre0.py | 94 ++++++++++++++++++++++++++++++++++++++ sanstitre1.py | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 sanstitre0.py create mode 100644 sanstitre1.py diff --git a/sanstitre0.py b/sanstitre0.py new file mode 100644 index 0000000..d021739 --- /dev/null +++ b/sanstitre0.py @@ -0,0 +1,94 @@ +import tkinter as tk + +fen = tk.Tk() +fen.title("Calculatrice") + +#taille de la fenetre +fen.geometry("550x450") + +canvas=tk.Canvas(fen, width=500, height=300, bg="pink") + +label = tk.Label(canvas, text='Testing') +# canvas.create_window(50, 50, window.label) +canvas.grid(column=0,row=0) + + + +class Expression: + """représente une expression arithmétique sous forme d'un arbre""" + def __init__ (self, valeur_racine, fils_gauche, fils_droit): + self.val_racine = valeur_racine + self.gauche = fils_gauche + self.droit = fils_droit + + def evalue (self) : + if self.gauche == None and self.droit == None : + return self.val_racine + + if self.gauche != None: #on ne met pas elif car les cas sont indépendants" + gauche_val = self.gauche.evalue() + else: + gauche_val = 0 + + if self.droit != None: + droite_val = self.droit.evalue() + else: + droite_val = 0 + + if self.val_racine == '+': + return gauche_val + droite_val + elif self.val_racine == '-': + return gauche_val - droite_val + elif self.val_racine == '*': + return gauche_val * droite_val + else : + raise ValueError ("Cette commande ne peut pas être effectuer") + + def __str__(self): + result = "" + if self.droit: + result = result + str(self.droit) + result = result + str(self.val_racine) + "\n" """le "/n" c'est pour avoir une nouvelle ligne de l'arbre""" + if self.gauche: + result += str(self.gauche) + return result + + def multiplication(self): + """Multiplie la valeur des fils gauche et droits""" + if self.gauche == int and self.droit == int : + return self.gauche * self.droit + + def addition(self): + """Additionne les valeurs des fils gauche et droits""" + if self.gauche == int and self.droit == int : + return self.gauche + self.droit + + #test +exp = Expression('*', + Expression(6, None, None), + Expression('+', + Expression(4, None, None), + Expression(3, None, None) + ) + ) + + + +# Label pour l'interface +label_1 = tk.Label(fen, text="Entrez l'expression :") +label_1.grid() + +# Champ de texte pour l'entrée de l'expression +entry = tk.Entry(fen, width=30) +entry.grid() + +# Bouton pour calculer l'expression +#btn_calculer = tk.Button(fenetre, text="Calculer", command=evaluer_expression) +#btn_calculer.pack() + +# Label pour afficher le résultat +label_2 = tk.Label(fen, text="Résultat: ") +label_2.grid() + +# Lancement de l'interface graphique +fen.mainloop() diff --git a/sanstitre1.py b/sanstitre1.py new file mode 100644 index 0000000..c7e0411 --- /dev/null +++ b/sanstitre1.py @@ -0,0 +1,123 @@ +import tkinter as tk + +from decimal import * + +import numpy as np + +from matplotlib.figure import Figure +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg + +fen = tk.Tk() +home = tk.Frame() +fen.title("Calculateur d'IMC") + +#taille de la fenetre +fen.geometry("950x750") + +canvas=tk.Canvas(fen, width=600, height=500, bg="white") #canvas de droite +blanc1 = tk.PhotoImage(file = 'blanc1.png')#image cachée +image_container1= canvas.create_image(0, 0,anchor=tk.NW,image = blanc1)#son placement +canvas.grid(column=1,row=0) #placement canvas + +canvas2=tk.Canvas(fen, width=225, height=500, bg="white") #canvas de gauche +blanc = tk.PhotoImage(file = 'blanc.png')#image cachée +image_container2= canvas2.create_image(40, 10,anchor=tk.NW, image = blanc)#son placement +canvas2.grid(column=0, row=0) #placement canvas + +lbl1=tk.Label(fen, text="votre poids (en kg)", font='Arial') #label poids +lbl1.grid(column=0, columnspan=2, padx=10, pady=10, row=1) + +entree_kg = tk.Entry(fen) #entry poids +entree_kg.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=2) + +lbl2=tk.Label(fen, text="votre taille (en cm)", font='Arial') #label taille +lbl2.grid(column=0, columnspan=2, padx=10, pady=10, row=3) + +entree_cm = tk.Entry(fen) #entry taille +entree_cm.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=4) + +Label1=tk.Label(fen, text=" ", font=('Arial'))#texte de droite caché +Label1.grid(column=1, row=1, sticky="e", padx=50, pady=10) + +#photos + +image_norm = tk.PhotoImage(file = 'normal.png') +image_obes_s = tk.PhotoImage(file = 'obesite severe.png') +image_obes = tk.PhotoImage(file = 'obesite.png') +image_sousp = tk.PhotoImage(file = 'sous poids.png') +image_surpoids = tk.PhotoImage(file = 'surpoids.png') + + +#fonction qui affiche image imc+petite phrase+graphique +def afficher_imc(): + if float(entree_cm.get()) < 100: + Label1.config(text="Veuillez entrer une valeur plus haute(cm)") + + elif float(entree_cm.get()) > 210: + Label1.config(text="Veuillez entrer une valeur plus basse(cm)") + + elif float(entree_kg.get()) <= 0: + Label1.config(text="Veuillez entrer une valeur plus basse(kg)") + + elif float(entree_kg.get()) > 210: + Label1.config(text="Veuillez entrer une valeur plus haute(kg)") + + else: + taille = float(entree_cm.get())/100 #convertir cm en m + poids= float(entree_kg.get()) + + imc =float(poids/taille**2) #calcul imc + + if imc <=18.4: + Label1.config(text="Vous êtes en sous-poids") + canvas2.itemconfig(image_container2,image=image_sousp) + + if imc >=18.5 and imc<=24.9: + Label1.config(text="Votre poids est normal") + canvas2.itemconfig(image_container2,image=image_norm) + + if imc >=25.0 and imc<=29.9: + Label1.config(text="Vous êtes en sur poids") + canvas2.itemconfig(image_container2,image=image_surpoids) + + if imc >=30.0 and imc<=34.9: + Label1.config(text="Vous etes en obesité") + canvas2.itemconfig(image_container2,image=image_obes) + + if imc >=35.0: + Label1.config(text="Vous etes en obesité sévere") + canvas2.itemconfig(image_container2, image=image_obes_s)#l'image de l'obésité sévère est un peu décalée, + #je ne suis pas arrivé à la redimensionner + imc2=Decimal(imc) + imc_simple = imc2.quantize(Decimal('.01')) #deux chiffres après la virgule + + lbl=tk.Label(fen, text="Votre imc est de :", font='Arial') + lbl.grid(column=0,row=1) + lbl=tk.Label(fen, text=imc_simple, font='Arial') #afficher le resultat calcul imc + lbl.grid(column=0, row=2) + + # graphique + fig = Figure(figsize=(7.2, 5.2), dpi=96) + ax = fig.add_subplot(111) + ax.axis([100, 220, 0, 180]) #limite du graphe + x = np.linspace(100, 220) # les tailles extrèmes en cm + # cm//m + ax.fill_between(x, 0, 18.4 * (x/100)**2, label="sous poids",color="LightBlue") # sous poids si 0 <= y <= 18.4 * x² + ax.fill_between(x, 18.5 * (x/100)**2, 24.9 * (x/100)**2, label="poids idéal",color="green") # idéal si 18.5 * x² <= y <= 24.9 * x² + ax.fill_between(x, 25 * (x/100)**2, 29.9 * (x/100)**2, label="surpoids",color="yellow") # surpoids si 25 * x² <= y <= 29.9 * x² + ax.fill_between(x, 30 * (x/100)**2, 34.9 * (x/100)**2, label="obesité",color="orange") # obésité si 30 * x² <= y <= 34.9 * x² + ax.fill_between(x,180, 35 * (x/100)**2, 40 * (x/100)**2, label="obesité sévère",color="red") # obesité sevère si 35 * x² <= y + ax.scatter(taille*100, poids, color='black')#point a placer sur le graphique. il ne s'affiche qu'une fois + #parce que je ne suis pas arrivé a ne pas le réinitialisé + + + graph = FigureCanvasTkAgg(fig, master=fen) + canvas = graph.get_tk_widget() + canvas.grid(row=0, column=1) + +bouton=tk.Button(fen, text="Afficher l'IMC", command=afficher_imc) #bouton pour afficher tout +bouton.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=6) + + + +fen.mainloop()