如何在Tkinter计算器中添加高级功能



我只是一个初学者,正在学习Python的Tkinter。我尝试创建一个计算器,它可以通过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()

您可以创建一个单独的函数来计算阶乘-算法非常简单

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

最新更新