You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.7 KiB

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