Как я могу добавить дополнительные функции в свой калькулятор Tkinter?

#python #tkinter #calculator

Вопрос:

Я всего лишь новичок, изучаю Tkinter для Python. Я попытался создать калькулятор, который может выполнять основные арифметические операции с помощью StringVar() и объединения строк. Теперь я хочу добавить функциональность, например, для вычисления факториала. Может ли кто-нибудь сказать мне, как интегрировать мою факториальную функцию с выводом, чтобы я мог интегрировать в нее больше функций?

 from tkinter import *
window = Tk()
window.title('Calculator')
window.config(bg='black')
# Gets the requested values of the height and widht.
windowWidth = window.winfo_reqwidth()
windowHeight = window.winfo_reqheight()
print("Width", windowWidth, "Height", windowHeight)

# Gets both half the screen width/height and window width/height
positionRight = int(window.winfo_screenwidth() / 4 - windowWidth / 2)
positionDown = int(window.winfo_screenheight() / 4 - windowHeight / 2)

# Positions the window in the center of the page.
window.geometry(" {} {}".format(positionRight, positionDown))


window.focus()
from tkinter import *

eq = StringVar()
eq.set('hello guys, i am a cute lil calculator')
initialzing = ""

def click_it(num):
    global initialzing

    initialzing = initialzing   str(num)
    eq.set(initialzing)

def pressequal():
    try:
        global initialzing
        total = str(eval(initialzing))
        eq.set(total)
        initialzing = ""
    except:
        eq.set("Syntax error ")
        initialzing = ""


def clear():
    global initialzing
    initialzing = ""
    eq.set("")

e = Entry(width=55, borderwidth=65, font="Helvetica 10 bold", bg='blue', textvariable=eq)
e.grid(ipady=15)
e.grid(columnspan=4, column=0, row=0, padx=10,pady=40)
# define_button
button_1 = Button(text='1', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(1))
button_2 = Button(text='2', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(2))
button_3 = Button(text='3', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(3))
button_4 = Button(text='4', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(4))
button_5 = Button(text='5', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(5))
button_6 = Button(text='6', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(6))
button_7 = Button(text='7', padx=70, pady=20, fg='white',bg='gray',command=lambda: click_it(7))
button_8 = Button(text='8', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(8))
button_9 = Button(text='9', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(9))
button_0 = Button(text='0', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(0))
button_clear = Button(text='CLR', padx=70, pady=20, bg='orange', command=clear)
button_add = Button(text=' ', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(' '))
button_equal = Button(text='=', padx=70, pady=20,fg='white',bg='gray', command=pressequal)
button_subtract = Button(text='-', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it('-'))
button_multiply = Button(text='x', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it('*'))
button_decimal = Button(text='.', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it('.'))
button_divide = Button(text='÷', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it('/'))
button_bracket_left=Button(text='(',  padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it('('))
button_bracket_right=Button(text=')', padx=70, pady=20,fg='white',bg='gray', command=lambda: click_it(')'))
# postion them
button_0.grid(row=4, column=0)
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_decimal.grid(row=5, column=2)
button_equal.grid(row=5, column=1)
button_clear.grid(row=5, column=0)
button_subtract.grid(row=3, column=3)
button_multiply.grid(row=2, column=3)
button_add.grid(row=1, column=3)
button_divide.grid(row=4, column=3)
button_bracket_left.grid(row=4, column=1)
button_bracket_right.grid(row=4, column=2)

window.mainloop()
 

Комментарии:

1. Вы используете eval для упрощения работы, если вы добавляете кнопку для факториала, вам нужно удалить initialzing переменную, чтобы найти ! символ.

2. Для факториала вы можете использовать math библиотеку. у него есть имя функции factorial . Это как math.factorial(5) =5. Вот еще несколько математических функций google.com/amp/s/www.geeksforgeeks.org/…

Ответ №1:

Вы можете создать отдельную функцию для вычисления факториала алгоритм действительно прост

 def Fact(n):
    Factorial=1
    for i in range(2,n 1)
        Factorial = Factorial*i

    return Factorial
 

Комментарии:

1. ОП знает, как вычислять факториал. Пожалуйста, внимательно прочитайте этот вопрос.