Browse Source

interface fonctionnelle mais les opérations ne le sont pas

master
corentin.bollet 10 months ago
parent
commit
5c4674d96b
  1. 12
      expression.py
  2. 46
      interface.py

12
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 ["+", "*"]:

46
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("<Return>", lambda e : self.evaluer())
self.saisie_expression.bind("<KP_Enter>", 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()
Loading…
Cancel
Save