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.
86 lines
2.3 KiB
86 lines
2.3 KiB
"""
|
|
Mauvaise utilisation du bloc try except.
|
|
Utilisation trop compliquée de fonctions lambda.
|
|
Avant de vouloir vous lancer dans des choses compliquées, il aurait été intéressant de
|
|
faire uniquement ce qui était demandé dans le cahier des charges ! Par exemple, comment
|
|
taper 10 avec votre clavier ? Que se passe-t-il si je tapes 2 2 calculer ?
|
|
Pourquoi vous acharnez-vous à faire faire votre travail
|
|
par une IA sans chercher à comprendre le résultat ?!?
|
|
|
|
Note : 5 / 10
|
|
"""
|
|
|
|
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()
|