Advertisement
Guest User

new

a guest
Mar 20th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.99 KB | None | 0 0
  1.  
  2.  
  3. # Calculator made using pythons tkinter module
  4. # Author - Mohamed Akil
  5.  
  6. from tkinter import *
  7.  
  8. class Application(Frame):
  9.     """ Main class for calculator"""
  10.  
  11.     def __init__(self, master):
  12.         """ Initialise the Frame. """
  13.         super(Application, self).__init__(master)
  14.         self.task = ""
  15.         self.UserIn = StringVar()
  16.         self.grid()
  17.         self.create_widgets()
  18.  
  19.     def create_widgets(self):
  20.         """ Create all the buttons for calculator. """
  21.         # User input stored as an Entry widget.
  22.  
  23.         self.user_input = Entry(self, bg = "#5BC8AC", bd = 29,
  24.         insertwidth = 4, width = 24,
  25.         font = ("Verdana", 20, "bold"), textvariable = self.UserIn, justify = RIGHT)
  26.         self.user_input.grid(columnspan = 4)
  27.  
  28.         self.user_input.insert(0, "0")
  29.  
  30.         # Button for value 7
  31.         self.button1 = Button(self, bg = "#98DBC6", bd = 12,
  32.         text = "7", padx = 33, pady = 25, font = ("Helvetica", 20, "bold"),
  33.         command = lambda : self.buttonClick(7))
  34.         self.button1.grid(row = 2, column = 0, sticky = W)
  35.  
  36.         # Button for value 8
  37.         self.button2 = Button(self, bg = "#98DBC6", bd = 12,
  38.         text = "8",  padx = 35, pady = 25,
  39.         command = lambda : self.buttonClick(8), font = ("Helvetica", 20, "bold"))
  40.         self.button2.grid(row = 2, column = 1, sticky = W)
  41.  
  42.         # Button for value 9
  43.         self.button3 = Button(self, bg = "#98DBC6", bd = 12,
  44.         text = "9",  padx = 33, pady = 25,
  45.         command = lambda : self.buttonClick(9), font = ("Helvetica", 20, "bold"))
  46.         self.button3.grid(row = 2, column = 2, sticky = W)
  47.  
  48.         # Button for value 4
  49.         self.button4 = Button(self, bg = "#98DBC6", bd = 12,
  50.         text = "4",  padx = 33, pady = 25,
  51.         command = lambda : self.buttonClick(4), font = ("Helvetica", 20, "bold"))
  52.         self.button4.grid(row = 3, column = 0, sticky = W)
  53.  
  54.         # Button for value 5
  55.         self.button5 = Button(self, bg = "#98DBC6", bd = 12,
  56.         text = "5",  padx = 35, pady = 25,
  57.         command = lambda : self.buttonClick(5), font = ("Helvetica", 20, "bold"))
  58.         self.button5.grid(row = 3, column = 1, sticky = W)
  59.  
  60.         # Button for value 6
  61.         self.button6 = Button(self, bg = "#98DBC6", bd = 12,
  62.         text = "6",  padx = 33, pady = 25,
  63.         command = lambda : self.buttonClick(6), font = ("Helvetica", 20, "bold"))
  64.         self.button6.grid(row = 3, column = 2, sticky = W)
  65.  
  66.         # Button for value 1
  67.         self.button7 = Button(self, bg = "#98DBC6", bd = 12,
  68.         text = "1",  padx = 33, pady = 25,
  69.         command = lambda : self.buttonClick(1), font = ("Helvetica", 20, "bold"))
  70.         self.button7.grid(row = 4, column = 0, sticky = W)
  71.  
  72.         # Button for value 2
  73.         self.button8 = Button(self, bg = "#98DBC6", bd = 12,
  74.         text = "2",  padx = 35, pady = 25,
  75.         command = lambda : self.buttonClick(2), font = ("Helvetica", 20, "bold"))
  76.         self.button8.grid(row = 4, column = 1, sticky = W)
  77.  
  78.         # Button for value 3
  79.         self.button9 = Button(self, bg = "#98DBC6", bd = 12,
  80.         text = "3",  padx = 33, pady = 25,
  81.         command = lambda : self.buttonClick(3), font = ("Helvetica", 20, "bold"))
  82.         self.button9.grid(row = 4, column = 2, sticky = W)
  83.  
  84.         # Button for value 0
  85.         self.button9 = Button(self, bg = "#98DBC6", bd = 12,
  86.         text = "0",  padx = 33, pady = 25,
  87.         command = lambda : self.buttonClick(0), font = ("Helvetica", 20, "bold"))
  88.         self.button9.grid(row = 5, column = 0, sticky = W)
  89.  
  90.         # Operator buttons
  91.         # Addition button
  92.         self.Addbutton = Button(self, bg = "#98DBC6", bd = 12,
  93.         text = "+",  padx = 36, pady = 25,
  94.         command = lambda : self.buttonClick("+"), font = ("Helvetica", 20, "bold"))
  95.         self.Addbutton.grid(row = 2, column = 3, sticky = W)
  96.  
  97.         # Subtraction button
  98.         self.Subbutton = Button(self, bg = "#98DBC6", bd = 12,
  99.         text = "-",  padx = 39, pady = 25,
  100.         command = lambda : self.buttonClick("-"), font = ("Helvetica", 20, "bold"))
  101.         self.Subbutton.grid(row = 3, column = 3, sticky = W)
  102.  
  103.         # Multiplication button
  104.         self.Multbutton = Button(self, bg = "#98DBC6", bd = 12,
  105.         text = "*",  padx = 38, pady = 25,
  106.         command = lambda : self.buttonClick("*"), font = ("Helvetica", 20, "bold"))
  107.         self.Multbutton.grid(row = 4, column = 3, sticky = W)
  108.  
  109.         # Division button
  110.         self.Divbutton = Button(self, bg = "#98DBC6", bd = 12,
  111.         text = "/",  padx = 39, pady = 25,
  112.         command = lambda : self.buttonClick("/"), font = ("Helvetica", 20, "bold"))
  113.         self.Divbutton.grid(row = 5, column = 3, sticky = W)
  114.  
  115.         # Equal button
  116.         self.Equalbutton = Button(self, bg = "#E6D72A", bd = 12,
  117.         text = "=",  padx = 100, pady = 25,
  118.         command = self.CalculateTask, font = ("Helvetica", 20, "bold"))
  119.         self.Equalbutton.grid(row = 5, column = 1, sticky = W, columnspan = 2)
  120.  
  121.         # Clear Button
  122.         self.Clearbutton = Button(self, bg = "#E6D72A", bd = 12,
  123.         text = "AC", font = ("Helvetica", 20, "bold"), width = 28, padx = 7, command = self.ClearDisplay)
  124.         self.Clearbutton.grid(row = 1, columnspan = 4, sticky = W)
  125.  
  126.     def buttonClick(self, number):
  127.         self.task = str(self.task) + str(number)
  128.         self.UserIn.set(self.task)
  129.  
  130.     def CalculateTask(self):
  131.         self.data = self.user_input.get()
  132.         try:
  133.             self.answer = eval(self.data)
  134.             self.displayText(self.answer)
  135.             self.task = self.answer
  136.  
  137.         except SyntaxError as e:
  138.             self.displayText("Invalid Syntax!")
  139.             self.task = ""
  140.  
  141.     def displayText(self, value):
  142.         self.user_input.delete(0, END)
  143.         self.user_input.insert(0, value)
  144.  
  145.     def ClearDisplay(self):
  146.         self.task = ""
  147.         self.user_input.delete(0, END)
  148.         self.user_input.insert(0, "0")
  149.  
  150.  
  151. calculator = Tk()
  152.  
  153. calculator.title("Calculator")
  154. app = Application(calculator)
  155. # Make window fixed (cannot be resized)
  156. calculator.resizable(width = False, height = False)
  157.  
  158. calculator.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement