Advertisement
henrydavidzhu

Python Tkinter Basic Calculator

Jun 22nd, 2016
2,461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.89 KB | None | 0 0
  1. from tkinter import *
  2.  
  3. calculator = Tk()
  4. calculator.title("Calculator")
  5. calculator.resizable(0, 0)
  6.  
  7. class Application(Frame):
  8.     def __init__(self, master, *args, **kwargs):
  9.         Frame.__init__(self, master, *args, **kwargs)
  10.         self.createWidgets()
  11.  
  12.     def replaceText(self, text):
  13.         self.display.delete(0, END)
  14.         self.display.insert(0, text)
  15.  
  16.     def calculateExpression(self):
  17.         self.expression = self.display.get()
  18.         self.expression = self.expression.replace("%", "/ 100")
  19.  
  20.         try:
  21.             self.result = eval(self.expression)
  22.             self.replaceText(self.result)
  23.         except:
  24.             messagebox.showinfo("Error", "Invalid Input")
  25.  
  26.     def appendToDisplay(self, text):
  27.         self.entryText = self.display.get()
  28.         self.textLength = len(self.entryText)
  29.  
  30.         if self.entryText == "0":
  31.             self.replaceText(text)
  32.         else:
  33.             self.display.insert(self.textLength, text)
  34.  
  35.     def clearText(self):
  36.         self.replaceText("0")
  37.  
  38.     def createWidgets(self):
  39.         self.display = Entry(self, font=("Helvetica", 16), borderwidth=0, relief=RAISED, justify=RIGHT)
  40.         self.display.insert(0, "0")
  41.         self.display.grid(row=0, column=0, columnspan=5)
  42.  
  43.         self.sevenButton = Button(self, font=("Helvetica", 11), text="7", borderwidth=0, command=lambda: self.appendToDisplay("7"))
  44.         self.sevenButton.grid(row=1, column=0, sticky="NWNESWSE")
  45.  
  46.         self.eightButton = Button(self, font=("Helvetica", 11), text="8", borderwidth=0, command=lambda: self.appendToDisplay("8"))
  47.         self.eightButton.grid(row=1, column=1, sticky="NWNESWSE")
  48.  
  49.         self.nineButton = Button(self, font=("Helvetica", 11), text="9", borderwidth=0, command=lambda: self.appendToDisplay("9"))
  50.         self.nineButton.grid(row=1, column=2, sticky="NWNESWSE")
  51.  
  52.         self.timesButton = Button(self, font=("Helvetica", 11), text="*", borderwidth=0, command=lambda: self.appendToDisplay("*"))
  53.         self.timesButton.grid(row=1, column=3, sticky="NWNESWSE")
  54.  
  55.         self.clearButton = Button(self, font=("Helvetica", 11), text="C", borderwidth=0, command=lambda: self.clearText())
  56.         self.clearButton.grid(row=1, column=4, sticky="NWNESWSE")
  57.        
  58.  
  59.         self.fourButton = Button(self, font=("Helvetica", 11), text="4", borderwidth=0, command=lambda: self.appendToDisplay("4"))
  60.         self.fourButton.grid(row=2, column=0, sticky="NWNESWSE")
  61.  
  62.         self.fiveButton = Button(self, font=("Helvetica", 11), text="5", borderwidth=0, command=lambda: self.appendToDisplay("5"))
  63.         self.fiveButton.grid(row=2, column=1, sticky="NWNESWSE")
  64.  
  65.         self.sixButton = Button(self, font=("Helvetica", 11), text="6", borderwidth=0, command=lambda: self.appendToDisplay("6"))
  66.         self.sixButton.grid(row=2, column=2, sticky="NWNESWSE")
  67.  
  68.         self.divideButton = Button(self, font=("Helvetica", 11), text="/", borderwidth=0, command=lambda: self.appendToDisplay("/"))
  69.         self.divideButton.grid(row=2, column=3, sticky="NWNESWSE")
  70.  
  71.         self.percentageButton = Button(self, font=("Helvetica", 11), text="%", borderwidth=0, command=lambda: self.appendToDisplay("%"))
  72.         self.percentageButton.grid(row=2, column=4, sticky="NWNESWSE")
  73.        
  74.  
  75.         self.oneButton = Button(self, font=("Helvetica", 11), text="1", borderwidth=0, command=lambda: self.appendToDisplay("1"))
  76.         self.oneButton.grid(row=3, column=0, sticky="NWNESWSE")
  77.  
  78.         self.twoButton = Button(self, font=("Helvetica", 11), text="2", borderwidth=0, command=lambda: self.appendToDisplay("2"))
  79.         self.twoButton.grid(row=3, column=1, sticky="NWNESWSE")
  80.  
  81.         self.threeButton = Button(self, font=("Helvetica", 11), text="3", borderwidth=0, command=lambda: self.appendToDisplay("3"))
  82.         self.threeButton.grid(row=3, column=2, sticky="NWNESWSE")
  83.  
  84.         self.minusButton = Button(self, font=("Helvetica", 11), text="-", borderwidth=0, command=lambda: self.appendToDisplay("-"))
  85.         self.minusButton.grid(row=3, column=3, sticky="NWNESWSE")
  86.  
  87.         self.equalsButton = Button(self, font=("Helvetica", 11), text="=", borderwidth=0, command=lambda: self.calculateExpression())
  88.         self.equalsButton.grid(row=3, column=4, sticky="NWNESWSE", rowspan=2)
  89.  
  90.  
  91.         self.zeroButton = Button(self, font=("Helvetica", 11), text="0", borderwidth=0, command=lambda: self.appendToDisplay("0"))
  92.         self.zeroButton.grid(row=4, column=0, columnspan=2, sticky="NWNESWSE")
  93.  
  94.         self.dotButton = Button(self, font=("Helvetica", 11), text=".", borderwidth=0, command=lambda: self.appendToDisplay("."))
  95.         self.dotButton.grid(row=4, column=2, sticky="NWNESWSE")
  96.  
  97.         self.plusButton = Button(self, font=("Helvetica", 11), text="+", borderwidth=0, command=lambda: self.appendToDisplay("+"))
  98.         self.plusButton.grid(row=4, column=3, sticky="NWNESWSE")
  99.  
  100. app = Application(calculator).grid()
  101. calculator.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement