Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- #calculator test
- root = Tk()
- root.title('Calculator')
- remove_num = False
- #display output
- display = Entry(root, width = 60, borderwidth = 2)
- display.grid(row = 0, column = 0, columnspan = 5, padx = 5, pady = 10)
- def button_active(n):
- global remove_num
- if n == 'C':
- display.delete(0, END)
- elif n == '=':
- try:
- num2 = int(display.get())
- except ValueError:
- print('No value inputted')
- return
- display.delete(0, END)
- #calculator functions
- if operator == '+':
- answ = num1 + num2
- elif operator == '-':
- answ = num1 - num2
- elif operator == '*':
- answ = num1 * num2
- else:
- answ = num1 / num2
- display.insert(0, answ)
- remove_num = True
- else:
- if remove_num:
- display.delete(0, END)
- remove_num = False
- display.insert(END, n)
- def button_operate(o):
- global num1, operator
- try:
- num1 = int(display.get())
- except ValueError:
- print('No value inputted')
- return
- operator = o
- display.delete(0, END)
- def btn(pos, txt, pad, cmd = None, span = None):
- b = Button(root)
- b['text'] = txt
- b['command'] = lambda x = txt: cmd(x)
- if pad == 'nums':
- b['padx'], b['pady'] = 40,20
- else:
- b['padx'], b['pady'] = pad[0], pad[1]
- if span == None:
- b.grid(row = pos[1], column = pos[0])
- else:
- b.grid(row = pos[1], column = pos[0],
- rowspan = span[1], columnspan = span[0])
- #buttons 1-9
- for num in range(9):
- x = num%3
- y = 3 - num//3
- btn((x,y), num+1, pad = 'nums', cmd = button_active)
- #clear, button 0 and equal
- btn((0,4), 'C', pad = [38, 20], cmd = button_active)
- btn((1,4), 0, pad = 'nums', cmd = button_active)
- btn((2,4), '=', pad = 'nums', cmd = button_active)
- #operators
- op_str = ['+', '-', '*', '/']
- for index, op in zip(range(4, 0, -1), op_str):
- btn((4,index), op, pad = 'nums', cmd = button_operate)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement