Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

here I am struggling with a tkinter problem for a calculator and I thought someone could help so i an being specific with the codes marked problems

*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

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

#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()

>Solution :

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()

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading