from tkinter import Tk, Button, Label, StringVar, Entry from misc.parser import * from misc.tokenizer import * from lib.File import File_chaine as File class Window(Tk): def __init__(self): Tk.__init__(self) self.title("test") self.geometry("500x600") self.resizable(False, False) self.layout() def layout(self): #TEXT self.text = StringVar(value="") self.label = Label(textvariable=self.text, background="#eaeaea", font=("Arial", 20)) self.label.pack(fill="x") self.input = Entry(textvariable=self.text) self.input.pack(fill="x") Label(text="Pensez aux parenthèses et à utiliser des espaces avec EVAL_NPI", font=("Arial", 11)).pack(fill='x') #BOUTTONS bouttons = ["1", "2", "3", "+", "-", "4", "5", "6", "*", "/", "7", "8", "9", "^", "sqrt", "EVAL", "0", "DEL", "CLEAR", "exp", "(", ")", ".", "sin", "cos", "EVAL_NPI", "ESPACE"] col = 0 row = 0 for b in bouttons: if col == 5: col = 0 row += 1 cmd = None if b == "EVAL": cmd = self.evalue elif b == "DEL": cmd = self.delete elif b == "CLEAR": cmd = self.clear elif b == "EVAL_NPI": cmd = self.evalue_npi elif b == "ESPACE": cmd = lambda: self.write(" ") else: cmd = lambda text = b: self.write(str(text)) Button(self, text=b, width=6, height=1, command=cmd).place(x=10+100*col, y=100+40*row) col += 1 def write(self, text): current = self.text.get() self.text.set(current + text) def delete(self): current = self.text.get() self.text.set(current[:-1]) def clear(self): self.text.set("") def evalue_npi(self): try: tokens = tokenize(self.text.get()) file = File() for token in tokens: file.enfiler(token) exp = npi2tree(file) self.text.set(exp.evalue()) except: self.text.set("Erreur NPI") def evalue(self): try: exp = npi2tree(shutting_yard(tokenize(self.text.get()))) self.text.set(exp.evalue()) except: self.text.set("Erreur")