class Expression: def __init__(self, root, left, right): self.root = root self.left = left self.right = right def evaluate(self): if self.root == '+': return self.left.evaluate() + self.right.evaluate() elif self.root == '*': return self.left.evaluate() * self.right.evaluate() else: return int(self.root) def __str__(self): if self.root in ['+', '*']: return f'({self.left} {self.root} {self.right})' else: return str(self.root) def npi2tree(npi_list): stack = [] for item in npi_list: if item in ['+', '*']: right = stack.pop() left = stack.pop() stack.append(Expression(item, left, right)) else: stack.append(Expression(item, None, None)) return stack[0] import tkinter as tk def evaluate_expression(): expression_text = entry.get() npi_list = expression_text.split() expression_tree = npi2tree(npi_list) result.set(expression_tree.evaluate()) root = tk.Tk() root.configure(bg="orange") root.title("Mini Calculatrice") expression_label = tk.Label(root, text="Expression:") expression_label.pack() expression_label.configure(bg="beige") entry = tk.Entry(root) entry.pack() calculate_button = tk.Button(root, text="Calculer", command=evaluate_expression) calculate_button.configure(bg="beige") calculate_button.pack() result = tk.StringVar() result_label = tk.Label(root, textvariable=result) result_label.configure(bg="orange") result_label.pack() root.mainloop()