LES ETAPES DE LA CONSTRUCTIONS DE LA CALCULATRICE
Dans tkinter la page est diviser en lignes (row) et en colonnes (column) qui commencent à 0.
Voici la maquette de notre calculatrice.
column
0 1 2 3 4 5 6 7
row 0
1 Ecrire tous les signe opératoires
2
3 ZONE REPONSES
4
5 7 8 9 +
6
7 4 5 6 -
8
9 1 2 3 *
10
11 0 point(virg) /
12
13 ( ) =
14 effacer
15
Etape 1 : Création de la fenêtre.
from tkinter import *
# Import des noms du module
# zone du programme fenetre = Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice") #Nom de la fenetre
fenetre.geometry("400x500") #definis la taille de la fenetre
# Ajout des autres widgets
# ...
fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 2 : création de la zone de réponse.
from tkinter import * # Import des noms du module
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=6) reponse.config(height=10,width=30,font=15)
fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 3 : Création du bouton 1
from tkinter import * # Import des noms du module
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=6) reponse.config(height=10,width=30)
bou1 =Button(fenetre,text='1',width =5,font=15).grid(row =9,column =1)# Bouton pour 1
fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 4 : Rendre actif le bouton
fromtkinter import*
# Import des noms du module
defbout1():
reponse.insert(END,"1")
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=6) reponse.config(height=10,width=30)
bou1 =Button(fenetre,text='1',width =5,font=15,command=bout1).grid(row =9,column =1)# Bouton pour 1
fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 5 : Création des autres boutons.
from tkinter import * # Import des noms du module
defbout0():
# fonctions pour ecrire quand on clique sur les boutons
reponse.insert(END,"0") defbout1():
reponse.insert(END,"1") defbout2():
reponse.insert(END,"2") defbout3():
reponse.insert(END,"3") defbout4():
reponse.insert(END,"4") defbout5():
reponse.insert(END,"5") defbout6():
reponse.insert(END,"6") defbout7():
reponse.insert(END,"7") defbout8():
reponse.insert(END,"8") defbout9():
reponse.insert(END,"9") defboutplus():
reponse.insert(END,"+") defboutmoins():
reponse.insert(END,"-") defboutfois():
reponse.insert(END,"*") defboutdiv():
reponse.insert(END,".") defpargauche():
reponse.insert(END,"(")
y=y+'('
defpardroite():
reponse.insert(END,")")
y=y+')'
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=10) reponse.config(height=10,width=30)
bou1 =Button(fenetre,text='1',width =5,command=bout1).grid(row =9,column =1)# Bouton pour 1
bou2 =Button(fenetre,text='2',width =5,command=bout2).grid(row =9,column =2) bou3 =Button(fenetre,text='3',width =5,command=bout3).grid(row =9,column =3) bou4 =Button(fenetre,text='4',width =5,command=bout4).grid(row =7,column =1) bou5 =Button(fenetre,text='5',width =5,command=bout5).grid(row =7,column =2) bou6 =Button(fenetre,text='6',width =5,command=bout6).grid(row =7,column =3) bou7 =Button(fenetre,text='7',width =5,command=bout7).grid(row =5,column =1) bou8 =Button(fenetre,text='8',width =5,command=bout8).grid(row =5,column =2) bou9 =Button(fenetre,text='9',width =5,command=bout9).grid(row =5,column =3) bou0 =Button(fenetre,text='0',width =5,command=bout0).grid(row =11,column =1)
boupoint =Button(fenetre,text=',',width =4,command=boutpoint).grid(row =11,column =3) bouplus =Button(fenetre,text='+',width =4,command=boutplus).grid(row =5,column =4) boumoins =Button(fenetre,text='-',width =4,command=boutmoins).grid(row =7,column =4) boufois =Button(fenetre,text='x',width =4,command=boutfois).grid(row =9,column =4) boudiv =Button(fenetre,text='/',width=4,command=boutdiv).grid(row=11,column=4)
boupargauche=Button(fenetre,text='(',width=5,command=pargauche).grid(row=13,column=1)# bouton parenthese
boupardroite=Button(fenetre,text=')',width=5,command=pardroite).grid(row=13,column=2) bouegale =Button(fenetre,text='=',width =4).grid(row =12,column =4)
fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 6 : le calcul et affichage du résultat.
from tkinter import * # Import des noms des modules frommath import*
y =str()# Crée une chaîne vide
defbout0():
# fonctions pour ecrire dans la zone texte quand on clique sur les boutons
reponse.insert(END,"0")
# pour écrire 0 dans la zone texte
globaly # pour dire y n'est pas une variable locale
y=y+'0' defbout1():
reponse.insert(END,"1")
globaly
y=y+'1' defbout2():
reponse.insert(END,"2")
globaly
y=y+'2' defbout3():
reponse.insert(END,"3")
globaly
y=y+'3' defbout4():
reponse.insert(END,"4")
globaly
y=y+'4' defbout5():
reponse.insert(END,"5")
globaly
y=y+'5' defbout6():
reponse.insert(END,"6")
globaly
y=y+'6' defbout7():
reponse.insert(END,"7")
globaly
y=y+'7' defbout8():
reponse.insert(END,"8")
globaly
y=y+'8' defbout9():
reponse.insert(END,"9")
globaly
y=y+'9' defboutplus():
reponse.insert(END,"+")
globaly
y=y+"+"
defboutmoins():
reponse.insert(END,"-")
globaly
reponse.insert(END,"*")
globaly
y=y+"*"
defboutdiv():
reponse.insert(END,"/")
globaly
y=y+"/"
defboutpoint():
reponse.insert(END,".")
globaly
y=y+"."
defpargauche():
reponse.insert(END,"(")
globaly
y=y+'('
defpardroite():
reponse.insert(END,")")
globaly
y=y+')'
defresultat():
# affichage du resultat
reponse.insert(END," = ")
globaly
x=round(eval(y),8)
reponse.insert(END,str(x)+'\n')
y=str()
defeffacer():
# pour effacer la zone texte
globaly
reponse.delete(0.0,END)
y=str()
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=6) reponse.config(height=10,width=30,font=15)
bou1 =Button(fenetre,text='1',width =5,command=bout1).grid(row =9,column =1)# Bouton pour 1 bou2 =Button(fenetre,text='2',width =5,command=bout2).grid(row =9,column =2)
bou3 =Button(fenetre,text='3',width =5,command=bout3).grid(row =9,column =3) bou4 =Button(fenetre,text='4',width =5,command=bout4).grid(row =7,column =1) bou5 =Button(fenetre,text='5',width =5,command=bout5).grid(row =7,column =2) bou6 =Button(fenetre,text='6',width =5,command=bout6).grid(row =7,column =3) bou7 =Button(fenetre,text='7',width =5,command=bout7).grid(row =5,column =1) bou8 =Button(fenetre,text='8',width =5,command=bout8).grid(row =5,column =2) bou9 =Button(fenetre,text='9',width =5,command=bout9).grid(row =5,column =3) bou0 =Button(fenetre,text='0',width =5,command=bout0).grid(row =13,column =1)
boupargauche=Button(fenetre,text='(',width=5,command=pargauche).grid(row=15,column=1)# bouton parenthese
boupardroite=Button(fenetre,text=')',width=5,command=pardroite).grid(row=15,column=2)
boupoint =Button(fenetre,text=',',width =5,command=boutpoint,font=15).grid(row =13,column
=3)# boutons operatoirs
bouplus =Button(fenetre,text='+',width =5,command=boutplus).grid(row =5,column =4) boumoins =Button(fenetre,text='-',width =5,command=boutmoins).grid(row =7,column =4) boufois =Button(fenetre,text='x',width =5,command=boutfois).grid(row =9,column =4) boudiv =Button(fenetre,text='/',width=5,command=boutdiv).grid(row=13,column=4)
bouegale =Button(fenetre,text='=',width =5,command=resultat).grid(row =15,column =4)# bouton egalite
boutoneffa=Button(text="Effacer",command=effacer,).grid(row=20,column=3)
# bouton effacer fenetre.mainloop()
# Démarrage de la boucle Tkinter (à placer à la fin !!!)
Etape 7: la présentation.
from tkinter import *
# Import des noms des modules frommath import*
y =str()# Crée une chaîne vide
defbout0():
# fonctions pour ecrire dans la zone texte quand on clique sur les boutons
reponse.insert(END,"0")
# pour écrire 0 dans la zone texte
globaly # pour dire y n'est pas une variable locale
y=y+'0' defbout1():
reponse.insert(END,"1")
globaly
y=y+'1' defbout2():
reponse.insert(END,"2")
globaly
y=y+'2' defbout3():
reponse.insert(END,"3")
globaly
y=y+'3' defbout4():
reponse.insert(END,"4")
globaly
y=y+'4' defbout5():
reponse.insert(END,"5")
globaly
y=y+'5' defbout6():
reponse.insert(END,"6")
globaly
y=y+'6' defbout7():
reponse.insert(END,"7")
globaly
y=y+'7' defbout8():
reponse.insert(END,"8")
globaly
y=y+'8' defbout9():
reponse.insert(END,"9")
globaly
y=y+'9' defboutplus():
reponse.insert(END,"+")
globaly
y=y+"+"
defboutmoins():
reponse.insert(END,"-")
globaly
y=y+"-"
defboutfois():
reponse.insert(END,"*")
globaly
y=y+"*"
defboutdiv():
reponse.insert(END,"/")
globaly
y=y+"/"
defboutpoint():
reponse.insert(END,".")
globaly
y=y+"."
defpargauche():
reponse.insert(END,"(")
globaly
y=y+'('
defpardroite():
reponse.insert(END,")")
globaly
y=y+')'
defresultat():
# affichage du resultat
reponse.insert(END," = ")
globaly
x=round(eval(y),8)
reponse.insert(END,str(x)+'\n','couleurreponse')
y=str()
defeffacer():
# pour effacer la zone texte
globaly
reponse.delete(0.0,END)
y=str()
fenetre =Tk()
# Création d'un objet "fenêtre"
fenetre.title (" Ma Calculatrice")
# Titre qui apparait dans le haut de la fenetre fenetre.geometry("325x560")
# la taille de la fenetre
fenetre.config(bg='SkyBlue2')
Label(fenetre,text="Ecrire tous les signes opératoires",font=15,fg="red", background='yellow').grid(row=1,column=1,columnspan=7)
Label(text="",bg='SkyBlue2').grid(row=0)
# pour des espaces entre les boutons Label(text="",bg='SkyBlue2').grid(row=2)
Label(text="",bg='SkyBlue2').grid(row=6) Label(text="",bg='SkyBlue2').grid(row=8) Label("",bg='SkyBlue2').grid(row=10) Label("",bg='SkyBlue2').grid(row=14)
Label("",bg='SkyBlue2',width=2).grid(column=0)
Label(text=" ",bg='SkyBlue2',width=6).grid(row=4,column=8) reponse=Text()#zone réponse
reponse.grid(row=3,column=1,columnspan=6) reponse.config(height=10,width=30,font=15)
reponse.tag_config('couleurreponse',foreground="red",font='bold')# pour mettre la reponse en couleur
barredef.grid(row=3,column=7,sticky=('N','S'))
bou1 =Button(fenetre,text='1',width =5,command=bout1,font=15).grid(row =9,column =1)# Bouton pour 1
bou2 =Button(fenetre,text='2',width =5,command=bout2,font=15).grid(row =9,column =2) bou3 =Button(fenetre,text='3',width =5,command=bout3,font=15).grid(row =9,column =3) bou4 =Button(fenetre,text='4',width =5,command=bout4,font=15).grid(row =7,column =1) bou5 =Button(fenetre,text='5',width =5,command=bout5,font=15).grid(row =7,column =2) bou6 =Button(fenetre,text='6',width =5,command=bout6,font=15).grid(row =7,column =3) bou7 =Button(fenetre,text='7',width =5,command=bout7,font=15).grid(row =5,column =1) bou8 =Button(fenetre,text='8',width =5,command=bout8,font=15).grid(row =5,column =2) bou9 =Button(fenetre,text='9',width =5,command=bout9,font=15).grid(row =5,column =3) bou0 =Button(fenetre,text='0',width =5,command=bout0,font=15).grid(row =13,column =1)
boupargauche=Button(fenetre,text='(',width=5,command=pargauche,font=15).grid(row=15,column=1)
# bouton parenthese
boupardroite=Button(fenetre,text=')',width=5,command=pardroite,font=15).grid(row=15,column=2)
boupoint =Button(fenetre,text=',',width =5,command=boutpoint,font=15).grid(row =13,column
=3)# boutons operatoirs
bouplus =Button(fenetre,text='+',width =5,bg="gold",command=boutplus,font=15).grid(row =5, column =4)
boumoins =Button(fenetre,text='-',width =5,bg="gold",command=boutmoins,font=15).grid(row
=7,column =4)
boufois =Button(fenetre,text='x',width =5,bg="gold",command=boutfois,font=15).grid(row =9, column =4)
boudiv =
Button(fenetre,text='/',width=5,bg="gold",command=boutdiv,font=15).grid(row=13,column=4)
bouegale =Button(fenetre,text='=',width =5,bg="red",command=resultat,font=15).grid(row =15, column =4)# bouton egalite
boutoneffa=Button(text="Effacer",command=effacer,bg="magenta",font=15).grid(row=20,column=3)
# bouton effacer
fenetre.mainloop()