#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. ОП знает, как вычислять факториал. Пожалуйста, внимательно прочитайте этот вопрос.