2 changed files with 44 additions and 13 deletions
@ -1,37 +1,68 @@ |
|||||
import tkinter as tk |
import tkinter as tk |
||||
from tkinter.constants import * |
from tkinter.constants import * |
||||
from tkinter import font |
from tkinter import font |
||||
|
from expression import npi2tree |
||||
|
|
||||
class Fenetre(tk.Tk): |
class Fenetre(tk.Tk): |
||||
def __init__(self): |
def __init__(self): |
||||
tk.Tk.__init__(self) |
tk.Tk.__init__(self) |
||||
self.title("Calculatrice") |
self.title("Calculatrice en polonais inversé") |
||||
self.geometry("400x600") |
self.geometry("400x600") |
||||
self.configure(bg='pink') |
self.configure(bg='pink') |
||||
self.font= font.Font(family="Arial", size=30, weight="bold" ) |
self.font= font.Font(family="Arial", size=30, weight="bold" ) |
||||
|
|
||||
#configuration des lignes et des colonnes afin de bien placer les boutons |
#configuration des lignes et des colonnes afin de bien placer les boutons |
||||
self.grid_rowconfigure(0, weight = 4) |
self.grid_rowconfigure(0, weight = 4) |
||||
for i in range(1, 5): |
self.grid_rowconfigure(1, weight = 1) |
||||
|
for i in range(2, 6): |
||||
self.grid_rowconfigure(i, weight = 1) |
self.grid_rowconfigure(i, weight = 1) |
||||
for j in range(4): |
for j in range(4): |
||||
self.grid_columnconfigure(j, weight = 1) |
self.grid_columnconfigure(j, weight = 1) |
||||
|
|
||||
#ajout de l'ecran et des boutons de la calculatrice |
#ajout de l'ecran et des boutons de la calculatrice |
||||
self.texte = "" |
self.texte = "" |
||||
self.ecran = tk.Label(self, text=self.texte,font=("Arial", 60), bg="#EDFAF0") |
self.ecran = tk.Label(self, text=self.texte,font=("Arial"), width = 5, height=5, bg="#EDFAF0") |
||||
self.ecran.grid(row = 0, column=0, columnspan=4, sticky="nsew") |
self.ecran.grid(row = 0, column=0, columnspan=4, sticky="nsew") |
||||
touches = ("7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ",", "=", "/") |
|
||||
ligne = 1 |
touches = ( "7","8", "9", "4", "5", "6", "1", "2", "3", "0", ".") |
||||
|
ligne = 2 |
||||
colonne = 0 |
colonne = 0 |
||||
for touche in touches: |
for touche in touches: |
||||
tk.Button(self, text=touche,command=lambda t=touche:self.calculer(t), font = self.font).grid(row=ligne, column = colonne) |
tk.Button(self, text=touche,command=lambda t=touche:self.affiche_boutons(t), font = self.font).grid(row=ligne, column = colonne) |
||||
colonne += 1 |
colonne += 1 |
||||
if colonne == 4: |
if colonne == 3: |
||||
colonne = 0 |
colonne = 0 |
||||
ligne += 1 |
ligne += 1 |
||||
|
symboles = ("-", "+", "*", "/") |
||||
|
l=2 |
||||
|
for symbole in symboles: |
||||
|
tk.Button(self, text=symbole,command=lambda s=symbole:self.affiche_boutons(s), font = self.font).grid(row=l, column = 3) |
||||
|
l += 1 |
||||
|
|
||||
|
tk.Button(self, text="=",command= self.calculer, font = self.font ).grid(row=5, column = 2) |
||||
|
tk.Button(self, text="supp",command = self.supprime, font = font.Font(family="Arial", size=10, weight="bold") ).grid(row=1, column = 2, columnspan = 2) |
||||
|
tk.Button(self, text="space",command = self.espace, font = font.Font(family="Arial", size=10, weight="bold") ).grid(row=1, column = 0, columnspan = 2) |
||||
|
|
||||
|
def affiche_boutons(self, element): |
||||
|
"""affiche le boutons selectionner a l'ecran ainsi que dans le calcul""" |
||||
|
self.texte = self.texte + element |
||||
|
self.ecran.config(text=self.texte) |
||||
|
|
||||
|
def supprime(self): |
||||
|
"""supprime toute l'expression notée""" |
||||
|
self.texte = "" |
||||
|
self.ecran.config(text = " ") |
||||
|
|
||||
|
def espace(self): |
||||
|
"""rajoute un espace dans la chaine de caractère""" |
||||
|
self.texte = self.texte + " " |
||||
|
self.ecran.config(text=self.texte) |
||||
|
|
||||
|
def calculer(self): |
||||
|
"""calcul l'expression ecrite en polonais inversé et l'affiche en notation infixe suivit du resultat""" |
||||
|
lst = self.texte.split(" ") |
||||
|
e = npi2tree(lst) |
||||
|
self.ecran.config(text = str(e) + "=" + str(e.evalue())) |
||||
|
|
||||
def calculer(self, element): |
|
||||
#if element == "=": |
|
||||
self.texte = self.texte + element |
|
||||
self.ecran.config(text=self.texte) |
|
||||
window = Fenetre() |
window = Fenetre() |
||||
window.mainloop() |
window.mainloop() |
||||
Loading…
Reference in new issue