diff --git a/expression.py b/expression.py index 7a37915..260e2c4 100644 --- a/expression.py +++ b/expression.py @@ -11,21 +11,27 @@ class Expression: """renvoie la valeur de l'expression""" if self.racine == "+": return self.gauche.evalue() + self.droit.evalue() + if self.racine == "-": + return self.gauche.evalue() - self.droit.evalue() if self.racine == "*": return self.gauche.evalue() * self.droit.evalue() + if self.racine == "/": + return self.gauche.evalue() / self.droit.evalue() - return self.racine + + return int(self.racine) def __str__(self): """affiche l'expression""" #temporaire - if self.racine in ["+","*"]: - return "(" + str(self.gauche) + ")" + self.racine + "(" + str(self.droit) + ")" + if self.racine in ["+", "*"]: + return "(" + str(self.gauche) + self.racine + str(self.droit) + ")" return str(self.racine) def npi2tree(liste_en_npi): + """conversion d'une liste en NPI en un arbre""" pile_expr = Pile() for element in liste_en_npi: if element in ["+", "*"]: diff --git a/interface.py b/interface.py new file mode 100644 index 0000000..81d9924 --- /dev/null +++ b/interface.py @@ -0,0 +1,46 @@ +import tkinter as tk +from expression import * + +class Interface(tk.Frame): + def __init__(self, master): + self.master = master + tk.Frame.__init__(self, master) + + self.saisie_expression = tk.Entry(self.master) + self.saisie_expression.grid(row=0, column=0) + self.saisie_expression.bind("", lambda e : self.evaluer()) + self.saisie_expression.bind("", lambda e : self.evaluer()) + + + btn_calculer = tk.Button(self.master, text='évaluer', command=self.evaluer) + btn_calculer.grid(row=0, column=2) + + self.affichage_expression = tk.Label(self.master) + self.affichage_expression.grid(row=1, column=0) + + tk.Label(self.master, text = "=").grid(row=1, column=1) + + self.res = tk.Label(self.master) + self.res.grid(row=1, column=2) + + + def evaluer(self): + lst_expr = self.saisie_expression.get().split() + try: + arbre_expr = npi2tree(lst_expr) + self.affichage_expression.config(text = str(arbre_expr)) + self.res.config(text = arbre_expr.evalue()) + except IndexError: + self.affichage_expression.config(text = "Erreur") + self.res.config(text = "Erreur") + + + + + +if __name__ == "__main__": + root = tk.Tk() + root.title("Calculatrice") + root.geometry("350x500") + hello_frame = Interface(root) + hello_frame.mainloop() \ No newline at end of file