from tkinter import * class Calculator: def __init__(self, master): self.master = master master.title("Calculator") self.frame1 = Frame(master) self.frame1.option_add("*Font", "arial 20 bold") self.frame1.pack(expand=YES, fill=BOTH) self.num1 = 0 self.num2 = 0 self.final = 0 self.method = 'none' self.result = StringVar() self.result.set("") self.entry = Entry(self.frame1, relief=FLAT, textvariable=self.result, justify='right', bd=5, bg='lightblue') self.entry.pack(side=TOP) self.frame2 = Frame(master, borderwidth=10, bd=1, bg="gray") self.frame2.pack(side=TOP, expand=YES, fill=BOTH) self.btnClear = Button(self.frame2, text = "C", width = 4, command = self.resetResult) self.btnClear.grid(column = 0, row = 0) self.btnCE = Button(self.frame2, text = "CE", width = 4, command = self.resetResult) self.btnCE.grid(column = 1, row = 0) #new new new self.btnPercent = Button(self.frame2, text = "%", width = 4, command = lambda: self.changeOp("%")) self.btnPercent.grid(column = 2, row = 0) for b in "123456789": btnNum = Button(self.frame2, text = b, width = 4, command = lambda n=b: self.numberUpdate(n)) btnNum.grid(column = (int(b)-1)%3, row = int((int(b)-1)/3) + 1) self.btnDiv = Button(self.frame2, text = "/", width = 4, command = lambda: self.changeOp("/")) self.btnDiv.grid(column = 3, row = 0) self.btnTimes = Button(self.frame2, text = "*", width = 4, command = lambda: self.changeOp("*")) self.btnTimes.grid(column = 3, row = 1) self.btnSub = Button(self.frame2, text = "-", width = 4, command = lambda: self.changeOp("-")) self.btnSub.grid(column = 3, row = 2) self.btnAdd = Button(self.frame2, text = "+", width = 4, command = lambda: self.changeOp("+")) self.btnAdd.grid(column = 3, row = 3) ############# last row ############## self.btnDiv = Button(self.frame2, text = "+/-", width = 4, command = self.changeSign) self.btnDiv.grid(column = 0, row = 4) btnNum = Button(self.frame2, text = "0", width = 4, command = lambda n="0": self.numberUpdate(n)) btnNum.grid(column = 1, row = 4) self.btnSub = Button(self.frame2, text = ".", width = 4, command = self.addDecimal) self.btnSub.grid(column = 2, row = 4) self.btnAdd = Button(self.frame2, text = "=", width = 4, command = self.getResult) self.btnAdd.grid(column = 3, row = 4) # homework starts below def changeOp(self, op): pass def changeSign(self): pass def addDecimal(self): pass def getResult(self): pass def resetResult(self): self.num1 = 0 self.num2 = 0 self.final = 0 self.method = 'none' self.result.set("") def numberUpdate(self, num): self.result.set(self.result.get()+num) tk = Tk() myCal = Calculator(tk) tk.mainloop()