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

这篇具有很好参考价值的文章主要介绍了房贷计算器——新增选择还款方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

#!/usr/bin/env python
# coding: utf-8

# In[4]:


'''
文字‘房贷计算器’
文字‘贷款总金额’:输入框
文字‘贷款期限’:输入框
文字‘年利率’:输入框
按钮‘开始计算’
返回:
月供
总利息

'''
from tkinter import *
import time
class Application():
    def __init__(self,app=None):
        self.app=app
        self.application()
        self.n1=0
        self.e0=self.e1=0
    def 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输入框(贷款总金额)1
        self.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标签Label2
        self.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标签Label3
        self.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 math
        def fangdai():
            '''
            房贷计算器
            输入:I:年利率 N:年限 a:贷款总额
            输出:总利息
            '''
            def not_num(x):
                try:
                    float(x)
                    return False
                except Exception as e:
                    return True
            #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)
            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())*12
            I=float(self.v3.get())*0.01
            i=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))+b
                    zl+=l
                if 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=1
            else:
                
                '''
                等额本金
                return:
                0总利息
                1首月还款
                2每月递减
                '''
                #0总利息
                zl=0
                for j in range(1,N+1):
                    l=(a-(j-1)*(a/N))*i
                    zl+=l
                #1首月还款
                b=a/N+a*i
                #2每月递减
                d=a/N*I/12
                if 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=1
        def get_canvas():
            self.img =PhotoImage(file = r'.\IMG_5768.png')
            if self.n1==0:
                self.n1+=1
                self.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()

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

房贷计算器——新增选择还款方式,Python学习笔记,python,Tkinter
房贷计算器——新增选择还款方式,Python学习笔记,python,Tkinter

错误提示机制

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)

房贷计算器——新增选择还款方式,Python学习笔记,python,Tkinter

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)

房贷计算器——新增选择还款方式,Python学习笔记,python,Tkinter文章来源地址https://www.toymoban.com/news/detail-515754.html

到了这里,关于房贷计算器——新增选择还款方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java后端开发——房贷计算器(Ajax版、Json版、等额本息+等额本金)

    1.新建一个JavaWeb项目hslcalweb,设置tomcat10。 2.创建房贷计算器JavaBean:HslCalBean.java,增加以下的属性,并生成Getter/Setter方法。 3.生成默认和带三个已知参数的构造方法。 4.增加计算器的计算方法cal() 6.新建一个控制器Servlet:HslCalServlet.java,映射的URL:/hslcal,从浏览器输入参数调

    2024年02月08日
    浏览(26)
  • 用python做计算器

    朋友们大家好,今天的内容是:用跑python做一个简易计算器,大家先来看一下效果:  可以看到,程序实现了加减乘除的功能,也可以求出余数。 这个程序要怎么实现呢,首先,我们需要导入tkinter模块 再来创造一个tkinter的窗口 再来实现我们的界面布局 再来编写现显示版的

    2024年02月11日
    浏览(32)
  • 【Python】简单计算器实现(四)

    解决思路: 最后,我们来看看最简单的运算函数和判断运算符函数。 定义函数: def calculate(n1, n2, operator) param n1: float param n2: float param operator: + - * / return: float 定义函数: def is_operator(e) param e: str return: bool 最后的调用 这里定义了两个变量 result 和 _ 来接收 final_calc 返回的两个

    2024年02月16日
    浏览(28)
  • 用python制作一个简易计算器

    这是一个用Python制作简单计算器的教程。你可以根据需要进行更多的改进,例如添加其他运算符或功能。 首先,我们需要创建一个简单的用户界面,用于显示计算器的按键和结果。在Python中,我们可以使用 tkinter 库来创建图形用户界面。创建一个新的Python文件,并将其命名为

    2024年02月11日
    浏览(35)
  • Python - 简易版计算器(附完整代码)

    对输入的两个数进行一次加减乘除 对输入的运算符进行判断 做出计算机图形界面

    2024年02月08日
    浏览(40)
  • Python自制简易版计算器小程序

    今天来给你们分享一个自制的桌面小程序【简易版计算器】 文章内有效果展示,你们可以自行看看哦 不想看文章,想直接领取源码的话,可以直接点击文章末尾的名片哈 Python 3.6 Pycharm 界面设置 导入模块 所有 源码 点击 此处 领取 即可 实例化一个窗体对象 标题 大小以及出

    2024年02月09日
    浏览(34)
  • python界面开发案例:制作一个计算器软件

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器,对吧 那它这功能是怎么实现的呢? 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有模块环境源码教程皆可点击文章下方

    2023年04月16日
    浏览(39)
  • Python制作简易计算器(GUI)---Tkinter

    tkinter模块是Python标准的TK GUI工具包接口,可以实现一些较为简单GUI的创建。 麻雀虽小,五脏俱全 TK工具集使用TCL(Tool Command Language)语言开发 运行相同的程序时,运行速度快于pyqt5 组件能满足基本使用 程序界面较简陋 开发时,使用的语句更短更易懂 Python内置的标准库 Qt框

    2024年02月08日
    浏览(47)
  • python tkinter 最简洁的计算器按钮排列

      代码如下,只要再加上按键绑定事件函数,计算器既可使用了。  代码最关键的就是只用一个双重循环就把24个按键一次搞定: 除了主角Button控件外,还有三个配角控件:Label、Separator以及Frame Separator隔开控件用,Frame摆放显示结果的Label标签,Label的原版帮助如下: Help o

    2024年01月23日
    浏览(29)
  • Python综合案例—利用tkinter实现计算器的程序

    目录 一、导入 tkinter 库 定义全局变量 二、定义回调函数 三、创建窗口对象 四、创建标签控件 五、创建数字按钮 六、创建加、减、乘、除和等于按钮 七、创建清空按钮 八、总结         用Python实现计算器可以让我们更好地理解面向对象编程、GUI 编程和事件驱动编程等

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包