'''
文字‘房贷计算器’
文字‘贷款总金额’:输入框
文字‘贷款期限’:输入框
文字‘年利率’:输入框
按钮‘开始计算’
返回:
月供
总利息
'''
from tkinter import *
class Application():
def __init__(self,app=None):
self.app=app
self.application()
def application(self):
#房贷计算器
self.label=Label(self.app,text='房贷计算器',font=('黑体', 16)).grid(row=0)
#贷款总金额
self.label1=Label(app,text='贷款总金额',font=('黑体', 16)).grid(row=1)
#输入框(贷款总金额)
self.v1=StringVar()
self.entry1=Entry(app,textvariable=self.v1,font=('黑体', 16)).grid(row=1,column=1)
self.label1=Label(app,text='贷款总金额',font=('黑体', 16)).grid(row=1)
self.unit1=Label(app,text='元',font=('黑体', 16)).grid(row=1,column=2)
#标签Label2
self.label2=Label(app,text='贷款期限',font=('黑体', 16)).grid(row=2)
#输入框(贷款期限)
self.v2=StringVar()
self.entry2=Entry(app,textvariable=self.v2,font=('黑体', 16)).grid(row=2,column=1)
self.unit2=Label(app,text='年',font=('黑体', 16)).grid(row=2,column=2)
#标签Label3
self.label3=Label(app,text='年利率',font=('黑体', 16)).grid(row=3)
#输入框(贷款期限)
self.v3=StringVar()
self.entry3=Entry(app,textvariable=self.v3,font=('黑体', 16)).grid(row=3,column=1)
self.unit3=Label(app,text='%',font=('黑体', 16)).grid(row=3,column=2)
import math
def fangdai():
'''
房贷计算器
输入:I:年利率 N:总月数 a:贷款总额
输出:总利息
'''
a=int(self.v1.get())
N=int(self.v2.get())*12
print(N)
I=float(self.v3.get())*0.01
i=I/12#月利率
b=(a*i*math.pow((1+i),N))/(math.pow(1+i,N)-1)#月供
zl=0#总利息
for j in range(1,N+1):
#每月利息
l=(a*i-b)*((1+i)**(j-1))+b
zl+=l
self.result=Label(app,text='总利息='+str(round(zl,2)),font=('黑体', 20)).grid(row=5,column=1)
self.result1=Label(app,text='月供='+str(round(b,2)),font=('黑体', 20)).grid(row=6,column=1)
self.bt=Button(self.app,text='开始计算',command=fangdai,font=('黑体', 16)).grid(row=4,column=1)
if __name__=='__main__':
app=Tk()
app.title('房贷计算器')
App=Application(app)
app.geometry('450x300+200+300')#窗口大小设置
app.mainloop()
填坑
(1)AttributeError: ‘NoneType’ object has no attribute 'XXX’的错误
from tkinter import *
app = Tk()
b = Entry(app).pack()
a = b.get()
解决方法:把代码分两行写
b = Entry(app)
b.pack()
Tkinter:AttributeError: ‘NoneType‘ object has no attribute ‘XXX‘解决方法
参考文献
用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)
conda activate python3
Pyinstaller -F -w filename(.py)