python-tkinter编写计算器_python -Tkinter 实现一个小计算器功能

该博客使用Python的Tkinter库编写了一个数量计算程序。定义了求总和、增长数等函数,通过输入基数、增长率和时间,点击计算按钮可在新窗口显示计算结果,还对输入为空或不合法的情况进行了提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#-*- coding:utf-8 -*-

from tkinter import *

importtkMessageBoxdefget_Tk():

top=Tk()returntop#定义求总和函数

defsum_test(baseNum,growthRate,time):return baseNum * (1+growthRate)**(time)#定义增长函数

defadd_sum (baseNum,growthRate,time):return baseNum * (1+growthRate)**(time) -baseNum#定义第N天增长数函数

defadd_num (baseNum,growthRate,time):return baseNum *growthRate* (1+growthRate)**(time-1)defshow_result(top,re_sum,re_add,add_Num,times):#这里使用Toplevel(top) 是为了新开一个窗口 ,且显示计算结果,如果直接实例化一个窗口,则新窗口不显示结算结果。

top_show =Toplevel(top)

top_show.title("计算结果显示")

top_show.geometry('300x240+810+420')

addNum= Label(top_show, text='第%d天增长数:' %times)

addNum.pack()

num_text=StringVar()

add_Nums= Entry(top_show, textvariable=num_text,state='readonly')

num_text.set(add_Num)

add_Nums.pack()#显示增长数

add_Sums = Label(top_show, text='%d天增长总数:' %times)

add_Sums.pack()

add_text=StringVar()

adds= Entry(top_show, textvariable=add_text,state='readonly')

add_text.set(re_add)

adds.pack()#显示总数

Sums = Label(top_show, text='%d天后总数:' %times)

Sums.pack()

sum_text=StringVar()

sums= Entry(top_show, textvariable=sum_text,state='readonly')

sum_text.set(re_sum)

sums.pack()

top_show.mainloop()defon_click(top,base_text,growth_text,time_text):#获取输入信息

if base_text.get().strip() == '':

tkMessageBox.showinfo(title='基数', message='基数为空,请输入有效的数值!')else:

base_Num=float(base_text.get())if growth_text.get().strip() == '':

tkMessageBox.showinfo(title='增长率', message='增长率为空,请输入有效的数值!')else:

growth_Rate=float(growth_text.get())if time_text.get().strip() == '':

tkMessageBox.showinfo(title='时间', message='时间为空,请输入有效的数值!')elif float(time_text.get()) < 1:

tkMessageBox.showinfo(title='时间', message='时间小于1,请输入大于或等于1的数值!')else:

temp_time=float(time_text.get())

times=int(temp_time)

re_sum=sum_test(base_Num, growth_Rate, times)#四舍五入保留小数点后两位

re_sum = round(re_sum, 2)#print type(re_sum)

re_add =add_sum(base_Num, growth_Rate, times)#四舍五入保留小数点后两位

re_add = round(re_add, 2)

add_Num=add_num(base_Num, growth_Rate, times)

add_Num= round(add_Num, 2)

show_result(top,re_sum,re_add,add_Num,times)defput_info():

top=get_Tk()#top.minsize(100, 100) # 窗口的最小缩放

top.title("计算总数量")

top.geometry('300x240+420+420')

baseNum= Label(top, text='基数:')

baseNum.pack()

base_text=StringVar()

base= Entry(top, textvariable=base_text)

base_text.set(" ")

base.pack()

growthRate= Label(top, text='增长率:')

growthRate.pack()

growth_text=StringVar()

growth= Entry(top, textvariable=growth_text)

growth_text.set('0.0115')

growth.pack()

useTime= Label(top, text='时间(天):')

useTime.pack()

time_text=StringVar()

times= Entry(top, textvariable=time_text)

time_text.set(" ")

times.pack()

Button(top, text="计算", command= lambda:on_click(top,base_text,growth_text,time_text)).pack()

top.mainloop()#这种 直接command = 方法名的方式,函数是不能传递参数的,所以为了能传递参数使用了上面的方法。

#Button(top, text="计算", command= on_click).pack()

if __name__ == '__main__':

put_info()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值