From edd20966d1c02f1f3f2e0cc2a230b77ae70a0b6d Mon Sep 17 00:00:00 2001 From: Swapnil8787 Date: Fri, 25 Oct 2019 19:02:47 +0530 Subject: [PATCH 1/2] A Different program for Making Calculator using GUI in Python --- Calculator2.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Calculator2.py diff --git a/Calculator2.py b/Calculator2.py new file mode 100644 index 0000000..5a4382d --- /dev/null +++ b/Calculator2.py @@ -0,0 +1,60 @@ +from tkinter import * + +def iCalc(source, side): + storeObj = Frame(source, borderwidth=4, bd=4, bg="powder blue" ) + storeObj.pack(side=side, expand =YES, fill =BOTH) + return storeObj + +def button(source, side, text, command=None): + storeObj = Button(source, text=text, command=command) + storeObj.pack(side=side, expand = YES, fill=BOTH) + return storeObj + +class app(Frame): + def __init__(self): + Frame.__init__(self) + self.option_add('*Font', 'arial 20 bold') + self.pack(expand = YES, fill =BOTH) + self.master.title('Calculator') + + display = StringVar() + Entry(self, relief=RIDGE, textvariable=display, + justify='right' + , bd=30, bg="powder blue").pack(side=TOP, + expand=YES, fill=BOTH) + + for clearButton in (["C"]): + erase = iCalc(self, TOP) + for ichar in clearButton: + button(erase, LEFT, ichar, lambda + storeObj=display, q=ichar: storeObj.set('')) + + for numButton in ("789/", "456*", "123-", "0.+"): + FunctionNum = iCalc(self, TOP) + for iEquals in numButton: + button(FunctionNum, LEFT, iEquals, lambda + storeObj=display, q=iEquals: storeObj + .set(storeObj.get() + q)) + + EqualButton = iCalc(self, TOP) + for iEquals in "=": + if iEquals == '=': + btniEquals = button(EqualButton, LEFT, iEquals) + btniEquals.bind('', lambda e,s=self, + storeObj=display: s.calc(storeObj), '+') + + + else: + btniEquals = button(EqualButton, LEFT, iEquals, + lambda storeObj=display, s=' %s ' % iEquals: storeObj.set + (storeObj.get() + s)) + + def calc(self, display): + try: + display.set(eval(display.get())) + except: + display.set("ERROR") + + +if __name__=='__main__': + app().mainloop() \ No newline at end of file From ade9f65939a2af151945c95b6762d3fec7d3dc58 Mon Sep 17 00:00:00 2001 From: Swapnil8787 Date: Fri, 25 Oct 2019 19:08:53 +0530 Subject: [PATCH 2/2] A simpler version of Calculator using GUI in python --- Calculator3.py | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Calculator3.py diff --git a/Calculator3.py b/Calculator3.py new file mode 100644 index 0000000..4e30ad3 --- /dev/null +++ b/Calculator3.py @@ -0,0 +1,122 @@ +from tkinter import * +root=Tk() +root.title("Digital Calculator") + +text_field=Entry(root,width=32,borderwidth=5,justify='right',bg="powder blue",bd=10,font="arial 12 bold") +text_field.grid(row=0,column=0,columnspan=4) + + +def btn_click(num): + current=text_field.get() + text_field.delete(0, END) + text_field.insert(0,str(current)+str(num)) + +def btn_clickd(dec): + current=text_field.get() + text_field.delete(0, END) + text_field.insert(0,str(current)+dec) + +def btn_clear(): + text_field.delete(0, END) + #text_field.insert(0,"0") + +def btn_del(): + length=len(text_field.get()) + text_field.delete(length-1,'end') + if length==1: + text_field.insert(0,'0') + +def btn_add(): + first_number=text_field.get() + global pre_num + global math + math="addition" + pre_num=float(first_number) + text_field.delete(0,END) + +def btn_equal(): + try: + second_number=text_field.get() + text_field.delete(0,END) + if math=="addition": + text_field.insert(0,pre_num + float(second_number)) + if math=="multiply": + text_field.insert(0,pre_num * float(second_number)) + if math=="subtraction": + text_field.insert(0,pre_num - float(second_number)) + if math=="divide": + text_field.insert(0,pre_num / float(second_number)) + except: + text_field.insert(0,"NOT DEFINED") + +def btn_subtract(): + first_number=text_field.get() + global pre_num + global math + math="subtraction" + pre_num=float(first_number) + text_field.delete(0,END) + +def btn_multiply(): + first_number=text_field.get() + global pre_num + global math + math="multiply" + pre_num=float(first_number) + text_field.delete(0,END) + +def btn_divide(): + first_number=text_field.get() + global pre_num + global math + math="divide" + pre_num=float(first_number) + text_field.delete(0,END) + +button_1=Button(root,text="1",padx=23,pady=10,command=lambda: btn_click(1),bg="black",fg="white",bd=5,font="arial 12 bold") +button_2=Button(root,text="2",padx=23,pady=10,command=lambda: btn_click(2),bg="black",fg="white",bd=5,font="arial 12 bold") +button_3=Button(root,text="3",padx=23,pady=10,command=lambda: btn_click(3),bg="black",fg="white",bd=5,font="arial 12 bold") +button_4=Button(root,text="4",padx=23,pady=10,command=lambda: btn_click(4),bg="black",fg="white",bd=5,font="arial 12 bold") +button_5=Button(root,text="5",padx=23,pady=10,command=lambda: btn_click(5),bg="black",fg="white",bd=5,font="arial 12 bold") +button_6=Button(root,text="6",padx=23,pady=10,command=lambda: btn_click(6),bg="black",fg="white",bd=5,font="arial 12 bold") +button_7=Button(root,text="7",padx=23,pady=10,command=lambda: btn_click(7),bg="black",fg="white",bd=5,font="arial 12 bold") +button_8=Button(root,text="8",padx=23,pady=10,command=lambda: btn_click(8),bg="black",fg="white",bd=5,font="arial 12 bold") +button_9=Button(root,text="9",padx=23,pady=10,command=lambda: btn_click(9),bg="black",fg="white",bd=5,font="arial 12 bold") +button_0=Button(root,text="0",padx=65,pady=10,command=lambda: btn_click(0),bg="black",fg="white",bd=5,font="arial 12 bold") +button_decimal=Button(root,text=".",padx=24,pady=10,command=lambda: btn_clickd("."),bg="black",fg="white",bd=5,font="arial 12 bold") + +button_m=Button(root,text="AC",padx=15,pady=10,command=btn_clear,bg="black",fg="white",bd=5,font="arial 12 bold") + + +button_add=Button(root,text="+",padx=22,pady=10,command=btn_add,bg="black",fg="white",bd=5,font="arial 12 bold") +button_subtract=Button(root,text="-",padx=23,pady=10,command=btn_subtract,bg="black",fg="white",bd=5,font="arial 12 bold") +button_multiply=Button(root,text="*",padx=23,pady=10,command=btn_multiply,bg="black",fg="white",bd=5,font="arial 12 bold") +button_divide=Button(root,text="/",padx=25,pady=10,command=btn_divide,bg="black",fg="white",bd=5,font="arial 12 bold") +button_equal=Button(root,text="=",padx=23,pady=42,command=btn_equal,bg="black",fg="white",bd=5,font="arial 12 bold") +DEL=Button(root,text="DEL",padx=12,pady=10,command=btn_del,bg="black",fg="white",bd=5,font="arial 12 bold") + +button_m.grid(row=1,column=0) +button_divide.grid(row=1,column=2) +button_multiply.grid(row=1,column=3) +button_subtract.grid(row=2,column=3) + +button_7.grid(row=2,column=0) +button_8.grid(row=2,column=1) +button_9.grid(row=2,column=2) +button_add.grid(row=3,column=3) + +button_4.grid(row=3,column=0) +button_5.grid(row=3,column=1) +button_6.grid(row=3,column=2) + +button_1.grid(row=4,column=0) +button_2.grid(row=4,column=1) +button_3.grid(row=4,column=2) +button_equal.grid(row=4,column=3,rowspan=2) + +button_0.grid(row=5,column=0,columnspan=2) +button_decimal.grid(row=5,column=2) +DEL.grid(row=1,column=1) + +root.resizable(0,0) +root.mainloop()