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.

74 lines
1.8 KiB

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