Advertisement
FrancisClements

Calculator App using TKinter

Jul 3rd, 2020
1,837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. from tkinter import *
  2.  
  3.    #calculator test
  4.  
  5.     root = Tk()
  6.     root.title('Calculator')
  7.     remove_num = False
  8.     #display output
  9.     display = Entry(root, width = 60, borderwidth = 2)
  10.     display.grid(row = 0, column = 0, columnspan = 5, padx = 5, pady = 10)
  11.  
  12.     def button_active(n):
  13.         global remove_num
  14.         if n == 'C':
  15.             display.delete(0, END)
  16.         elif n == '=':
  17.             try:
  18.                 num2 = int(display.get())
  19.             except ValueError:
  20.                 print('No value inputted')
  21.                 return
  22.             display.delete(0, END)
  23.             #calculator functions
  24.             if operator == '+':
  25.                 answ = num1 + num2
  26.             elif operator == '-':
  27.                 answ = num1 - num2
  28.             elif operator == '*':
  29.                 answ = num1 * num2
  30.             else:
  31.                 answ = num1 / num2
  32.             display.insert(0, answ)
  33.             remove_num = True
  34.  
  35.         else:
  36.             if remove_num:
  37.                 display.delete(0, END)
  38.                 remove_num = False
  39.             display.insert(END, n)
  40.  
  41.     def button_operate(o):
  42.         global num1, operator
  43.         try:
  44.             num1 = int(display.get())
  45.         except ValueError:
  46.             print('No value inputted')
  47.             return
  48.  
  49.         operator = o
  50.         display.delete(0, END)
  51.  
  52.  
  53.     def btn(pos, txt, pad, cmd = None, span = None):
  54.         b = Button(root)
  55.         b['text'] = txt
  56.  
  57.         b['command'] = lambda x = txt: cmd(x)
  58.  
  59.         if pad == 'nums':
  60.             b['padx'], b['pady'] = 40,20
  61.         else:
  62.             b['padx'], b['pady'] = pad[0], pad[1]
  63.        
  64.         if span == None:
  65.             b.grid(row = pos[1], column = pos[0])
  66.         else:
  67.             b.grid(row = pos[1], column = pos[0],
  68.                 rowspan = span[1], columnspan = span[0])
  69.  
  70.     #buttons 1-9
  71.     for num in range(9):
  72.         x = num%3
  73.         y = 3 - num//3
  74.  
  75.         btn((x,y), num+1, pad = 'nums', cmd = button_active)
  76.  
  77.     #clear, button 0 and equal
  78.     btn((0,4), 'C', pad = [38, 20], cmd = button_active)
  79.     btn((1,4), 0, pad = 'nums', cmd = button_active)
  80.     btn((2,4), '=', pad = 'nums', cmd = button_active)
  81.  
  82.     #operators
  83.     op_str = ['+', '-', '*', '/']
  84.     for index, op in zip(range(4, 0, -1), op_str):
  85.         btn((4,index), op, pad = 'nums', cmd = button_operate)
  86.  
  87.     root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement