Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2020
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.98 KB | None | 0 0
  1. Source code for building a calculator using Tkinter
  2.  
  3. from tkinter import *
  4. import parser
  5.  
  6. root = Tk()
  7. root.title('Calculator')
  8.  
  9. #get the user input and place it in the textfield
  10. i = 0
  11. def get_variables(num):
  12.     global i
  13.     display.insert(i,num)
  14.     i+=1
  15.  
  16. def calculate():
  17.     entire_string = display.get()
  18.     try:
  19.         a = parser.expr(entire_string).compile()
  20.         result = eval(a)
  21.         clear_all()
  22.         display.insert(0,result)
  23.     except Exception:
  24.         clear_all()
  25.         display.insert(0,"Error")
  26.  
  27. def get_operation(operator):
  28.     global i
  29.     length = len(operator)
  30.     display.insert(i,operator)
  31.     i+=length
  32.  
  33.  
  34. def clear_all():
  35.     display.delete(0,END)
  36.  
  37. def undo():
  38.     entire_string = display.get()
  39.     if len(entire_string):
  40.         new_string = entire_string[:-1]
  41.         clear_all()
  42.         display.insert(0,new_string)
  43.     else:
  44.         clear_all()
  45.         display.insert(0,"Error")
  46.  
  47. #adding the input field
  48. display = Entry(root)
  49. display.grid(row=1,columnspan=6,sticky=W+E)
  50.  
  51. #adding buttons to the calculator
  52.  
  53. Button(root,text="1",command = lambda :get_variables(1)).grid(row=2,column=0)
  54. Button(root,text="2",command = lambda :get_variables(2)).grid(row=2,column=1)
  55. Button(root,text="3",command = lambda :get_variables(3)).grid(row=2,column=2)
  56.  
  57. Button(root,text="4",command = lambda :get_variables(4)).grid(row=3,column=0)
  58. Button(root,text="5",command = lambda :get_variables(5)).grid(row=3,column=1)
  59. Button(root,text="6",command = lambda :get_variables(6)).grid(row=3,column=2)
  60.  
  61. Button(root,text="7",command = lambda :get_variables(7)).grid(row=4,column=0)
  62. Button(root,text="8",command = lambda :get_variables(8)).grid(row=4,column=1)
  63. Button(root,text="9",command = lambda :get_variables(9)).grid(row=4,column=2)
  64.  
  65. #adding other buttons to the calculator
  66. Button(root,text="AC",command=lambda :clear_all()).grid(row=5,column=0)
  67. Button(root,text="0",command = lambda :get_variables(0)).grid(row=5,column=1)
  68. Button(root,text="=",command=lambda :calculate()).grid(row=5,column=2)
  69.  
  70.  
  71. Button(root,text="+",command= lambda :get_operation("+")).grid(row=2,column=3)
  72. Button(root,text="-",command= lambda :get_operation("-")).grid(row=3,column=3)
  73. Button(root,text="*",command= lambda :get_operation("*")).grid(row=4,column=3)
  74. Button(root,text="/",command= lambda :get_operation("/")).grid(row=5,column=3)
  75.  
  76. # adding new operations
  77. Button(root,text="pi",command= lambda :get_operation("*3.14")).grid(row=2,column=4)
  78. Button(root,text="%",command= lambda :get_operation("%")).grid(row=3,column=4)
  79. Button(root,text="(",command= lambda :get_operation("(")).grid(row=4,column=4)
  80. Button(root,text="exp",command= lambda :get_operation("**")).grid(row=5,column=4)
  81.  
  82. Button(root,text="<-",command= lambda :undo()).grid(row=2,column=5)
  83. Button(root,text="x!").grid(row=3,column=5)
  84. Button(root,text=")",command= lambda :get_operation(")")).grid(row=4,column=5)
  85. Button(root,text="^2",command= lambda :get_operation("**2")).grid(row=5,column=5)
  86.  
  87.  
  88. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement