`
purpen
  • 浏览: 786652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python Tkinter写的个人所得税计算器(原创)

阅读更多
刚学Tkinter两天,边学边写了一个"个人所得税计算器",欢迎大侠们进来指点指点:)

python 代码
 
  1. #!/usr/bin/env python  
  2. """caloulate person taxes"""  
  3. from Tkinter import *  
  4. import sys  
  5.   
  6. class tax(Frame):  
  7.     """caloulate personal tax"""  
  8.     def __init__(self,parent = None):  
  9.         Frame.__init__(self,parent)  
  10.         self.pack(side=TOP)  
  11.         self.entries = []  
  12.         for var_value in field_list:  
  13.             row = Frame(self)  
  14.             row.pack(side=TOP,fill=X)  
  15.             Label(row,text=var_value,width=15,height=2).pack(side=LEFT)  
  16.             ent = Entry(row,bg = 'white')  
  17.             ent.pack(side=RIGHT,expand=YES,fill=X)  
  18.             ent.bind('<Return>',(lambda event:self.fetch_value()))  
  19.             self.entries.append(ent)  
  20.               
  21.         self.init_btn()  
  22.         self.init_result()  
  23.           
  24.     def fetch_value(self):  
  25.         """fetch valve and get result"""  
  26.         result = []  
  27.         try:  
  28.             for entry in self.entries:  
  29.                 result.append(entry.get())  
  30.           
  31.             res = self.get_result(result[0],result[1])  
  32.             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])   
  33.             self.lab_result["bg"] = 'lightyellow'  
  34.             self.lab_result["fg"] = 'red'  
  35.         except ValueError:  
  36.             self.lab_result["bg"] = 'red'  
  37.             self.lab_result["fg"] = 'black'  
  38.             self.lab_result["text"] = 'Error Occur,Please Test Again.'  
  39.           
  40.     def get_result(self,salary,start):  
  41.         """caloulate tax"""  
  42.         over = float(salary) - float(start)  
  43.         tax = ""  
  44.         if over <= 500:  
  45.             tax = over*0.05  
  46.         elif over > 500 and over <= 2000:  
  47.             tax = over*0.1 - 25  
  48.         elif over > 2000 and over <= 5000:  
  49.             tax = over*0.15 - 125  
  50.         elif over > 5000 and over <= 20000:  
  51.             tax = over*0.2 - 375  
  52.         elif over > 20000 and over <= 40000:  
  53.             tax = over*0.25 - 1375  
  54.         elif over > 40000 and over <= 60000:  
  55.             tax = over*0.3 - 3375  
  56.         elif over > 60000 and over <= 80000:  
  57.             tax = over*0.35 - 6375  
  58.         elif over > 80000 and over <= 100000:  
  59.             tax = over*0.4 - 10375  
  60.         else:  
  61.             tax = over*0.45 - 15375  
  62.         return [salary,tax,float(salary) - tax]  
  63.       
  64.     def init_btn(self):  
  65.         """init control button"""  
  66.         btn_frame = Frame(self)  
  67.         btn_frame.pack(expand=YES,fill=X)  
  68.         btn_submit = Button(btn_frame,text='Submit',command=self.fetch_value)  
  69.         btn_submit.pack(side=LEFT,expand=YES,fill=X)  
  70.         Button(btn_frame,text="Reset",command=self.clear_data).pack(side=LEFT,expand=YES,fill=X)  
  71.         Button(btn_frame,text="Quit",command=sys.exit).pack(side=LEFT,expand=YES,fill=X)  
  72.           
  73.     def init_result(self):  
  74.         """init result label"""  
  75.         self.lab_result = Label(self,fg='red',font = ('times',16,'bold'))  
  76.         self.lab_result.pack(expand=YES,fill=X)  
  77.                    
  78.     def clear_data(self):  
  79.         """clear old data"""  
  80.         for entry in self.entries:  
  81.             entry.delete(0,END)  
  82.         self.lab_result["text"] = ''  
  83.         self.lab_result["bg"] = '#eeeeee'        
  84.      
  85.       
  86. field_list = ["Type Your Salary:","Local Tax Start:"]  
  87. #start process  
  88. root = Tk()  
  89. root.title('Personal Income caloulate')  
  90. root.geometry("350x200+250+50")  
  91. per_tax = tax(root)  
  92. root.mainloop()  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics