*my que was not over so here i am marking my problems in the code so you can see what can be the solution with square root function I used
def button_sqrt():
first_number = e.get()
global f_num
global math
math = "sqrt"
f_num = int(first_number)
e.delete(0, END),
if math == "sqrt":
e.insert(0, f_num * int(second_number))
this but it is not working
#starting
from tkinter import *
root = Tk()
root.title("Simple Calculator")
e = Entry(root, width=35, borderwidth=5)
e.grid(row=0, column=0, columnspan=4, padx=11, pady=11,)
#add buttons
def button_click(number):
current = e.get()
e.delete(0, END)
e.insert(0, str(current) str(number))
def button_clear():
e.delete(0, END)
def button_add():
first_number = e.get()
global f_num
global math
math = "addition"
f_num = int(first_number)
e.delete(0, END)
def button_equal():
second_number = e.get()
e.delete(0, END)
if math == "addition":
e.insert(0, f_num int(second_number))
if math == "subtraction":
e.insert(0, f_num - int(second_number))
if math == "multiplication":
e.insert(0, f_num * int(second_number))
if math == "division":
e.insert(0, f_num / int(second_number))
I want to add a square root function here
#remaining buttons def
def button_subtract():
first_number = e.get()
global f_num
global math
math = "subtraction"
f_num = int(first_number)
e.delete(0, END)
def button_multiply():
first_number = e.get()
global f_num
global math
math = "multiplication"
f_num = int(first_number)
e.delete(0, END)
def button_divide():
first_number = e.get()
global f_num
global math
math = "division"
f_num = int(first_number)
e.delete(0, END)
and one here button for square root
# define buttons
button_1 = Button(root, text=" 1 ", padx=41, pady=20, command=lambda: button_click(1))
button_2 = Button(root, text=" 2 ", padx=41, pady=20, command=lambda: button_click(2))
button_3 = Button(root, text=" 3 ", padx=41, pady=20, command=lambda: button_click(3))
button_4 = Button(root, text=" 4 ", padx=41, pady=20, command=lambda: button_click(4))
button_5 = Button(root, text=" 5 ", padx=41, pady=20, command=lambda: button_click(5))
button_6 = Button(root, text=" 6 ", padx=41, pady=20, command=lambda: button_click(6))
button_7 = Button(root, text=" 7 ", padx=41, pady=20, command=lambda: button_click(7))
button_8 = Button(root, text=" 8 ", padx=41, pady=20, command=lambda: button_click(8))
button_9 = Button(root, text=" 9 ", padx=41, pady=20, command=lambda: button_click(9))
button_0 = Button(root, text=" 0 ", padx=41, pady=20, command=lambda: button_click(0))
button_add = Button(root, text=" ", padx=40, pady=20, command=button_add)
button_equal = Button(root, text=" = ", padx=90, pady=20, command=button_equal)
button_clear = Button(root, text=" Clear ", padx=80, pady=20, command=button_clear)
button_subtract = Button(root, text=" - ", padx=41, pady=20, command=button_subtract)
button_multiply = Button(root, text=" * ", padx=41, pady=20, command=button_multiply)
button_divide = Button(root, text=" / ", padx=41, pady=20, command=button_divide)
button for square root here
# put the buttons on the screen
button_1.grid(row=3, column=0)
button_2.grid(row=3, column=1)
button_3.grid(row=3, column=2)
button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)
button_7.grid(row=1, column=0)
button_8.grid(row=1, column=1)
button_9.grid(row=1, column=2)
button_0.grid(row=4,column=0)
button_clear.grid(row=4, column=1, columnspan=2)
button_add.grid(row=5, column=0)
button_equal.grid(row=5, column=1, columnspan=2)
button_subtract.grid(row=6, column=0)
button_multiply.grid(row=6, column=1)
button_divide.grid(row=6, column=2)
and a button on screen for square root here
root.mainloop()
CodePudding user response:
Since square root only needs a single value in order to calculate, you wouldn't want to add the logic to the button_equal function like you do with the other operators. Instead you keep all the logic inside of your sqrt_button
.
for example:
from tkinter import *
root = Tk()
root.title("Simple Calculator")
e = Entry(root, width=35, borderwidth=5)
e.grid(row=0, column=0, columnspan=4, padx=11, pady=11,)
# add buttons
def button_click(number):
current = e.get()
e.delete(0, END)
e.insert(0, str(current) str(number))
def button_clear():
e.delete(0, END)
def button_add():
first_number = e.get()
global f_num
global math
math = "addition"
f_num = int(first_number)
e.delete(0, END)
def button_equal():
second_number = e.get()
e.delete(0, END)
if math == "addition":
e.insert(0, f_num int(second_number))
if math == "subtraction":
e.insert(0, f_num - int(second_number))
if math == "multiplication":
e.insert(0, f_num * int(second_number))
if math == "division":
e.insert(0, f_num / int(second_number))
# remaining buttons def
def button_subtract():
first_number = e.get()
global f_num
global math
math = "subtraction"
f_num = int(first_number)
e.delete(0, END)
def button_multiply():
first_number = e.get()
global f_num
global math
math = "multiplication"
f_num = int(first_number)
e.delete(0, END)
def button_divide():
first_number = e.get()
global f_num
global math
math = "division"
f_num = int(first_number)
e.delete(0, END)
def button_sqrt():
first_number = e.get()
global f_num
global math
math = "sqrt"
f_num = int(first_number)
e.delete(0, END)
e.insert(0, f_num ** .5)
# define buttons
button_1 = Button(root, text=" 1 ", padx=41, pady=20, command=lambda: button_click(1))
button_2 = Button(root, text=" 2 ", padx=41, pady=20, command=lambda: button_click(2))
button_3 = Button(root, text=" 3 ", padx=41, pady=20, command=lambda: button_click(3))
button_4 = Button(root, text=" 4 ", padx=41, pady=20, command=lambda: button_click(4))
button_5 = Button(root, text=" 5 ", padx=41, pady=20, command=lambda: button_click(5))
button_6 = Button(root, text=" 6 ", padx=41, pady=20, command=lambda: button_click(6))
button_7 = Button(root, text=" 7 ", padx=41, pady=20, command=lambda: button_click(7))
button_8 = Button(root, text=" 8 ", padx=41, pady=20, command=lambda: button_click(8))
button_9 = Button(root, text=" 9 ", padx=41, pady=20, command=lambda: button_click(9))
button_0 = Button(root, text=" 0 ", padx=41, pady=20, command=lambda: button_click(0))
button_add = Button(root, text=" ", padx=40, pady=20, command=button_add)
button_equal = Button(root, text=" = ", padx=90, pady=20, command=button_equal)
button_clear = Button(root, text=" Clear ", padx=80, pady=20, command=button_clear)
button_subtract = Button(root, text=" - ", padx=41, pady=20, command=button_subtract)
button_multiply = Button(root, text=" * ", padx=41, pady=20, command=button_multiply)
button_divide = Button(root, text=" / ", padx=41, pady=20, command=button_divide)
button_sqrt = Button(root, text="sqrt", padx=41, pady=20, command=button_sqrt)
button_1.grid(row=3, column=0)
button_2.grid(row=3, column=1)
button_3.grid(row=3, column=2)
button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)
button_7.grid(row=1, column=0)
button_8.grid(row=1, column=1)
button_9.grid(row=1, column=2)
button_0.grid(row=4,column=0)
button_clear.grid(row=4, column=1, columnspan=2)
button_add.grid(row=5, column=0)
button_equal.grid(row=5, column=1, columnspan=2)
button_subtract.grid(row=6, column=0)
button_multiply.grid(row=6, column=1)
button_divide.grid(row=6, column=2)
button_sqrt.grid(row=7, column=0)
root.mainloop()