房贷计算器——新增选择还款方式

news/2024/12/2 17:54:12/

房贷计算器——新增选择还款方式

#!/usr/bin/env python
# coding: utf-8# In[4]:'''
文字‘房贷计算器’
文字‘贷款总金额’:输入框
文字‘贷款期限’:输入框
文字‘年利率’:输入框
按钮‘开始计算’
返回:
月供
总利息'''
from tkinter import *
import time
class Application():def __init__(self,app=None):self.app=appself.application()self.n1=0self.e0=self.e1=0def application(self):'''功能一:创建输入界面,包含:标题0、贷款金额1、期限2和利率3'''#0房贷计算器self.label0=Label(self.app,text='房贷计算器',font=('黑体',20)).grid(row=0,column=1)#1贷款总金额self.label1=Label(self.app,text='贷款总金额',font=('黑体', 16)).grid(row=1)#1输入框(贷款总金额)1self.v1=StringVar()self.entry1=Entry(self.app,textvariable=self.v1,font=('黑体', 16)).grid(row=1,column=1)self.label1=Label(self.app,text='贷款总金额',font=('黑体', 16)).grid(row=1)self.unit1=Label(self.app,text='元',font=('黑体', 16)).grid(row=1,column=2)#2标签Label2self.label2=Label(self.app,text='贷款期限',font=('黑体', 16)).grid(row=2)#2输入框(贷款期限)self.v2=StringVar()self.entry2=Entry(self.app,textvariable=self.v2,font=('黑体', 16)).grid(row=2,column=1)self.unit2=Label(self.app,text='年',font=('黑体', 16)).grid(row=2,column=2)#3标签Label3self.label3=Label(self.app,text='年利率',font=('黑体', 16)).grid(row=3)#3输入框(贷款期限)self.v3=StringVar()self.entry3=Entry(self.app,textvariable=self.v3,font=('黑体', 16)).grid(row=3,column=1)self.unit3=Label(self.app,text='%',font=('黑体', 16)).grid(row=3,column=2)#选择还款方式:0等额本息;1等额本金self.var=IntVar()self.ra0=Radiobutton(self.app,text='等额本息',variable=self.var,value=0,font=('黑体',16))self.ra0.grid(row=4,column=0)self.ra1=Radiobutton(self.app,text='等额本金',variable=self.var,value=1,font=('黑体',16))self.ra1.grid(row=4,column=1)       import mathdef fangdai():'''房贷计算器输入:I:年利率 N:年限 a:贷款总额输出:总利息'''def not_num(x):try:float(x)return Falseexcept Exception as e:return True#1if self.v1.get()=='':self.erro1=Label(self.app,text='请输入贷款总金额',font=('黑体', 10),fg='red')self.erro1.config(background='white')self.erro1.grid(row=1,column=1)self.app.after(3000,self.erro1.destroy)elif not self.v1.get().isdigit():self.erro1=Label(self.app,text='请输入数字',font=('黑体', 10),fg='red')self.erro1.config(background='white')self.erro1.grid(row=1,column=1)self.app.after(3000,self.erro1.destroy)if self.v2.get()=='':self.erro2=Label(self.app,text='请输入贷款期限',font=('黑体', 10),fg='red')self.erro2.config(background='white')self.erro2.grid(row=2,column=1)self.app.after(3000,self.erro2.destroy)elif not self.v2.get().isdigit():self.erro2=Label(self.app,text='请输入数字',font=('黑体', 10),fg='red')self.erro2.config(background='white')self.erro2.grid(row=2,column=1)self.app.after(3000,self.erro2.destroy)if self.v3.get()=='':self.erro3=Label(self.app,text='请输入年利率',font=('黑体', 10),fg='red')self.erro3.config(background='white')self.erro3.grid(row=3,column=1)self.app.after(3000,self.erro3.destroy)elif not_num(self.v3.get()):print('lalala')self.erro3=Label(self.app,text='请输入数字',font=('黑体', 10),fg='red')self.erro3.config(background='white')self.erro3.grid(row=3,column=1)self.app.after(3000,self.erro3.destroy)a=int(self.v1.get())N=int(self.v2.get())*12I=float(self.v3.get())*0.01i=I/12#月利率if self.var.get()==0:'''等额本息'''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))+bzl+=lif self.e1==1:self.result2.destroy()self.result3.destroy()self.result4.destroy()print('lalaladddd')self.result0=Label(self.app,text='总利息='+str(round(zl,2)),font=('黑体', 20))self.result0.grid(row=7,column=1)self.result1=Label(self.app,text='月供='+str(round(b,2)),font=('黑体', 20))self.result1.grid(row=8,column=1)self.e0=1else:'''等额本金return:0总利息1首月还款2每月递减'''#0总利息zl=0for j in range(1,N+1):l=(a-(j-1)*(a/N))*izl+=l#1首月还款b=a/N+a*i#2每月递减d=a/N*I/12if self.e0==1:self.result0.destroy()self.result1.destroy()self.result2=Label(self.app,text='总利息='+str(round(zl,2)),font=('黑体', 20))self.result2.grid(row=7,column=1,columnspan=2)self.result3=Label(self.app,text='首月还款='+str(round(b,2)),font=('黑体', 20))self.result3.grid(row=8,column=1,columnspan=2)self.result4=Label(self.app,text='每月递减='+str(round(d,2)),font=('黑体', 20))self.result4.grid(row=9,column=1,columnspan=2)self.e1=1def get_canvas():self.img =PhotoImage(file = r'.\IMG_5768.png')if self.n1==0:self.n1+=1self.pic=Label(self.app,image=self.img).grid(columnspan=3)            self.bt=Button(self.app,text='开始计算',command=fangdai,font=('黑体', 16)).grid(row=5,column=1)self.bt=Button(self.app,text='生成图表',command=get_canvas,font=('黑体', 16)).grid(row=6,column=1)#以下为添加图表if __name__=='__main__':app=Tk()app.title('房贷计算器')App=Application(app)app.geometry('600x600+300+150')#窗口大小设置app.mainloop()

两种还款方式:等额本息和等额本金

在这里插入图片描述
在这里插入图片描述

错误提示机制

1、请输入金额

            if self.v1.get()=='':self.erro1=Label(self.app,text='请输入贷款总金额',font=('黑体', 10),fg='red')self.erro1.config(background='white')self.erro1.grid(row=1,column=1)self.app.after(3000,self.erro1.destroy)

在这里插入图片描述

2、请输入数字

            elif not self.v2.get().isdigit():self.erro2=Label(self.app,text='请输入数字',font=('黑体', 10),fg='red')self.erro2.config(background='white')self.erro2.grid(row=2,column=1)self.app.after(3000,self.erro2.destroy)

在这里插入图片描述


http://www.ppmy.cn/news/681460.html

相关文章

谈高考志愿填报

目录 不如先说说我自己。 一、选专业还是选学校: 二、你想推荐/避雷的专业: 三、填报志愿的策略: 四、影响专业选择的因素: 各省高考成绩已出,又到一年高考季。张雪峰提到:“普通家庭不要光谈理想&…

Java——《面试题——设计模式篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

redis修改密码

redis修改密码有两种方法 一、直接在redis-cli修改 首先登陆redis (无密码)-h 127.0.0.1 -p 6379 (已有密码)auth [password] 查看当前密码 config get requirepass 修改密码 config set requirepass (这种方式重启服务后密码就重置…

mac里mysql8.0.16版本修改密码

在终端执行下面两条指令 alias mysqladmin/usr/local/bin/mysqladminalias mysql/usr/local/bin/mysqlsudo mysql进入mysql use mysql; 执行下面指令修改密码。 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY你的密码;用你的密码登录mysql。

【git修改密码】

git修改密码 查看用户名 :git config user.name 查看密码: git config user.password 查看邮箱:git config user.email 查看配置信息: $ git config --list 修改用户名 git config --global user.name “xxxx(新的用户名)” …

MySQL8修改密码

备份一下,免得以后找不到 原文:MySQL8修改密码步骤_才华抛物线19的博客-CSDN博客_mysql8修改密码 一、免密登录: 1、修改mysql配置文件(配置文件位置:/etc/my.cnf ),在配置文件中添加一行&am…

Linux root密码修改

作者:技术工程师–陈锐锐 前言:最近遇到有将自己root密码忘记的情况,这里总结一下root密码修改的几种方法,仅供参考。 一、Linux 6.x以及以下版本 1.重启系统,按e进入如下模式 再次按e进入如图模式(选中…

MySQL跳过密码登录并修改用户密码

1、跳过密码登录: MySQL配置文件/etc/my.cnf中,在[mysqld]下添加skip-grant-tables,关闭 MySQL服务并重新开启; 输入命令:mysql -u root -p 回车后,要求输入密码,直接回车跳过,则直接…