import tkinter as tk from tkinter import messagebox from expression import npi2tree def ajouter(val): entree.insert(tk.END, val + " ") def calculer(): try: texte = entree.get() liste = texte.split() arbre = npi2tree(liste) resultat.config(text="Résultat : " + str(arbre.evalue())) except: messagebox.showerror("Erreur", "Expression invalide") def effacer(): entree.delete(0, tk.END) resultat.config(text="") fenetre = tk.Tk() fenetre.title("Calculatrice NPI") fenetre.geometry("500x600") entree = tk.Entry(fenetre, width=35, font=("Arial", 18)) entree.pack(pady=20) frame = tk.Frame(fenetre) frame.pack() chiffres = ["7", "8", "9", "4", "5", "6", "1", "2", "3", "0"] i = 0 for c in chiffres: b = tk.Button(frame, text=c, width=6, height=2, font=("Arial", 16), command=lambda x=c: ajouter(x)) b.grid(row=i//3, column=i%3, padx=5, pady=5) i += 1 plus = tk.Button(frame, text="+", width=6, height=2, font=("Arial", 16), command=lambda: ajouter("+")) plus.grid(row=0, column=3, padx=5, pady=5) fois = tk.Button(frame, text="*", width=6, height=2, font=("Arial", 16), command=lambda: ajouter("*")) fois.grid(row=1, column=3, padx=5, pady=5) btn_calc = tk.Button(fenetre, text="Calculer", font=("Arial", 16), height=2, command=calculer) btn_calc.pack(pady=10) btn_clear = tk.Button(fenetre, text="Effacer", font=("Arial", 16), height=2, command=effacer) btn_clear.pack(pady=5) resultat = tk.Label(fenetre, text="", font=("Arial", 16), fg="red") resultat.pack(pady=20) fenetre.mainloop()