Créer une calculatrice En Python avec Tkinter

Salut les lecteurs aujourdh'hui on se propose dans ce mini projet graphique en Python Tkinter de créer une simple calculatrice comme le montre la figure ci-dessous:
L'interface graphique sera basée sur la disposition géométrique grid (les boutons seront nommés btn_0, btn_1, btn_3, ... , btn_9.
Le champ de saisi Entry sera nommé equation.
Nous allons ensuite créer une variable globale qui sera nommée formule qui sera affectée au champ de saisi equation.
Nous créons ensuite une méthode nommée click() qui permettra de saisir l'etiquette du bouton sur lequel le click a été effectué.
Nous créons ensuite une méthode nommée equalclick() qui va évaluer l'expression saisie et afficher le résultat sur le champ equation.
Finalement une méthode effacer() pour effacer le résultat.

Code Source

Double taper sur le code pour copier son contenu


from tkinter import *

formule = "" 

def click(num): 

    global formule 
    formule = formule + str(num) 
    equation.set(formule) 

def equalclick(): 
    try: 
        global formule 

        result = str(eval(formule)) 
        equation.set(result) 
        formule = result

    except: 
        equation.set(" error ") 
        formule = "" 

def effacer(): 
    global formule 
    formule = "" 
    equation.set("") 

if __name__ == "__main__": 
    master = Tk() 
    master.title("Calculatrice") 
    master.geometry("375x315") 
    equation = StringVar() 
    formule_field = Entry(master, textvariable=equation) 
    formule_field.grid(columnspan=4,  pady= 30 , padx = 20 , ipadx = 100 , ipady = 10)
    btn_1 = Button(master, text=' 1 ', command=lambda: click(1), height=2, width=10) 
    btn_1.grid(row=2, column=0) 

    btn_2 = Button(master, text=' 2 ', command=lambda: click(2), height=2, width=10) 
    btn_2.grid(row=2, column=1) 

    btn_3 = Button(master, text=' 3 ', command=lambda: click(3), height=2, width=10) 
    btn_3.grid(row=2, column=2) 

    btn_4 = Button(master, text=' 4 ', command=lambda: click(4), height=2, width=10) 
    btn_4.grid(row=3, column=0) 

    btn_5 = Button(master, text=' 5 ', command=lambda: click(5), height=2, width=10) 
    btn_5.grid(row=3, column=1) 

    btn_6 = Button(master, text=' 6 ', command=lambda: click(6), height=2, width=10) 
    btn_6.grid(row=3, column=2) 

    btn_7 = Button(master, text=' 7 ', command=lambda: click(7), height=2, width=10) 
    btn_7.grid(row=4, column=0) 

    btn_8 = Button(master, text=' 8 ', command=lambda: click(8), height=2, width=10) 
    btn_8.grid(row=4, column=1) 

    btn_9 = Button(master, text=' 9 ', command=lambda: click(9), height=2, width=10) 
    btn_9.grid(row=4, column=2) 

    btn_0 = Button(master, text=' 0 ', command=lambda: click(0), height=2, width=10) 
    btn_0.grid(row=5, column=0) 

    plus = Button(master, text=' + ', command=lambda: click("+"), height=2, width=10) 
    plus.grid(row=2, column=3) 

    minus = Button(master, text=' - ', command=lambda: click("-"), height=2, width=10) 
    minus.grid(row=3, column=3) 

    multiply = Button(master, text=' * ', command=lambda: click("*"), height=2, width=10) 
    multiply.grid(row=4, column=3) 

    divide = Button(master, text=' / ', command=lambda: click("/"), height=2, width=10) 
    divide.grid(row=5, column=3) 

    equal = Button(master, text=' = ', command=equalclick, height=2, width=10) 
    equal.grid(row=5, column=2) 

    effacer = Button(master, text='effacer', command=effacer, height=2, width=10) 
    effacer.grid(row=6, column='0') 

    Decimal= Button(master, text='.', command=lambda: click('.'), height=2, width=10) 
    Decimal.grid(row=5, column=1) 
    
    percent= Button(master, text='%', command=lambda: click('%'), height=2, width=10) 
    percent.grid(row=6, column=1) 
    
    inverse= Button(master, text='1/X',  height=2, width=10) 
    inverse.grid(row=6, column=2) 
    
    memo= Button(master, text='M',  height=2, width=10) 
    memo.grid(row=6, column=3)     
    
    master.mainloop()
  • A+
  • A-