#!/usr/bin/env python
"""caloulate person taxes"""
from Tkinter import *
import sys
class tax(Frame):
"""caloulate personal tax"""
def __init__(self,parent = None):
Frame.__init__(self,parent)
self.pack(side=TOP)
self.entries = []
for var_value in field_list:
row = Frame(self)
row.pack(side=TOP,fill=X)
Label(row,text=var_value,width=15,height=2).pack(side=LEFT)
ent = Entry(row,bg = 'white')
ent.pack(side=RIGHT,expand=YES,fill=X)
ent.bind('<Return>',(lambda event:self.fetch_value()))
self.entries.append(ent)
self.init_btn()
self.init_result()
def fetch_value(self):
"""fetch valve and get result"""
result = []
try:
for entry in self.entries:
result.append(entry.get())
res = self.get_result(result[0],result[1])
self.lab_result["text"] = 'Your Salary is %s .\n Your Tax is %s .\n Your Money is %s .\n' % (res[0],res[1],res[2])
self.lab_result["bg"] = 'lightyellow'
self.lab_result["fg"] = 'red'
except ValueError:
self.lab_result["bg"] = 'red'
self.lab_result["fg"] = 'black'
self.lab_result["text"] = 'Error Occur,Please Test Again.'
def get_result(self,salary,start):
"""caloulate tax"""
over = float(salary) - float(start)
tax = ""
if over <= 500:
tax = over*0.05
elif over > 500 and over <= 2000:
tax = over*0.1 - 25
elif over > 2000 and over <= 5000:
tax = over*0.15 - 125
elif over > 5000 and over <= 20000:
tax = over*0.2 - 375
elif over > 20000 and over <= 40000:
tax = over*0.25 - 1375
elif over > 40000 and over <= 60000:
tax = over*0.3 - 3375
elif over > 60000 and over <= 80000:
tax = over*0.35 - 6375
elif over > 80000 and over <= 100000:
tax = over*0.4 - 10375
else:
tax = over*0.45 - 15375
return [salary,tax,float(salary) - tax]
def init_btn(self):
"""init control button"""
btn_frame = Frame(self)
btn_frame.pack(expand=YES,fill=X)
btn_submit = Button(btn_frame,text='Submit',command=self.fetch_value)
btn_submit.pack(side=LEFT,expand=YES,fill=X)
Button(btn_frame,text="Reset",command=self.clear_data).pack(side=LEFT,expand=YES,fill=X)
Button(btn_frame,text="Quit",command=sys.exit).pack(side=LEFT,expand=YES,fill=X)
def init_result(self):
"""init result label"""
self.lab_result = Label(self,fg='red',font = ('times',16,'bold'))
self.lab_result.pack(expand=YES,fill=X)
def clear_data(self):
"""clear old data"""
for entry in self.entries:
entry.delete(0,END)
self.lab_result["text"] = ''
self.lab_result["bg"] = '#eeeeee'
field_list = ["Type Your Salary:","Local Tax Start:"]
#start process
root = Tk()
root.title('Personal Income caloulate')
root.geometry("350x200+250+50")
per_tax = tax(root)
root.mainloop()
suode.zip_calculator python_python 计算器_python计算器
版权申诉
198 浏览量
2022-09-22
19:05:56
上传
评论
收藏 1KB ZIP 举报
APei
- 粉丝: 63
- 资源: 1万+
最新资源
- 鸢尾花(iris)数据集
- %E8%A7%86%E9%A2%91%E8%BD%AC%E9%9F%B3%E9%A2%9120240424092849.mp3
- 数据库中的分组查询及数据筛选
- J185-VB一款SOT23封装P-Channel场效应MOS管
- 计算整数各位数字之和,利用java代码实现
- J185-T2B-VB一款SOT23封装P-Channel场效应MOS管
- map20231226Kalmanfilter.ipynb
- J185-T1B-VB一款SOT23封装P-Channel场效应MOS管
- ASME Y14.5-2018 尺寸与公差标注 中文版
- J185-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0