Tämä ohjelma laskee annuiteettilainan koron ja lyhennyksen joka kuukaudelle. Annuiteettilainassa maksuerät ovat yhtäsuuria ja korko lasketaan joka kuukauden jäljellä olevasta lainasta. Tästä saadaan lyhennys, kun maksuerästä vähennetään korko. tk_tools kirjastolla muodostetaan taulukko. Muokattu 17.6. klo 23.46.
from tkinter import * import tk_tools import numpy as np import matplotlib.pyplot as plt root = Tk() def Laske(laina,korko,kuukaudet): kuukausiKorko = korko/12.0 #Lasketaan maksuerä ja korko #Annuiteettilainassa jokainen maksuerä on yhtäsuuri. maksuera = laina*(1.0+(kuukausiKorko/100.0))**kuukaudet*(kuukausiKorko/100.0) maksuera /= (1.0+(kuukausiKorko/100.0))**kuukaudet-1 koronMaara = (laina*kuukausiKorko)/100.0 koronMaarat = [] lyhennykset = [] summa = maksuera*kuukaudet summaKorko = summa-laina while (laina > 0): koronMaara =(laina*kuukausiKorko)/100.0 lyhennys = maksuera-koronMaara laina -= lyhennys koronMaarat.append((round(koronMaara*100)/100.0)) lyhennykset.append((round(lyhennys*100)/100.0)) return koronMaarat,lyhennykset,maksuera,summa,summaKorko def Kayttoliittyma(): #Annetaan lähtötiedot. try: if (checkVar.get() == 0): #Otetaan lähtötiedot ja tallennetaan tiedostoon. tiedosto = open("annuiteetti.txt","w") laina = float(e1.get()) korko = float(e2.get()) kuukaudet = float(e3.get()) tiedosto.write(str(laina) + "\n" + str(korko) + "\n" + str(kuukaudet)) tiedosto.close() else: #Ladataan tiedostosta. tiedosto = open("annuiteetti.txt","r") mjn = tiedosto.readlines() laina = float(mjn[0]) korko = float(mjn[1]) kuukaudet = float(mjn[2]) tiedosto.close() #Toista kertaa tietoja ei voi syöttää e1.configure(state=DISABLED) e2.configure(state=DISABLED) e3.configure(state=DISABLED) btn.configure(state=DISABLED) koronMaarat,lyhennykset,maksuera,summa,summaKorko = Laske(laina,korko,kuukaudet) l4.config(text="Yhteensa:" + str(summa)) l5.config(text="Korot:"+str(summaKorko)) if (checkVar2.get() == 1): for x in range(len(koronMaarat)): ruudukko.add_row([str(x+1), str(koronMaarat[x]),str(lyhennykset[x])]) else: indeksi = int(spin.get()) ruudukko.add_row([str(indeksi+1),str(koronMaarat[indeksi]),str(lyhennykset[indeksi])]) #Muodostetaan pylväskaavio fig = plt.subplots(figsize=(100,100)) N = len(lyhennykset) p1 = plt.bar(np.arange(N),lyhennykset,0.35) p2 = plt.bar(np.arange(N),koronMaarat,0.35, bottom=lyhennykset) plt.legend((p1[0],p2[0]),("lyhennykset","koron määrät")) plt.ylabel("Rahasumma") plt.xticks(np.arange(N)) plt.yticks(np.arange(0,maksuera,maksuera/20)) plt.show() except: print("Ei kelpaa") frame = Frame(root) frame.pack() frame2 = Frame(root) frame2.pack() frame3 = Frame(root) frame3.pack() #Ensimmäinen frame var = StringVar() var2 = StringVar() var3 = StringVar() l1 = Label(frame,textvariable=var) l1.grid(row=1,column=1) e1 = Entry(frame) e1.grid(row=1,column=2) l2 = Label(frame,textvariable=var2) l2.grid(row=2,column=1) e2 = Entry(frame) e2.grid(row=2,column=2) l3 = Label(frame,textvariable=var3) l3.grid(row=3,column=1) e3 = Entry(frame) e3.grid(row=3,column=2) var.set("Lainan määrä") var2.set("Korko") var3.set("Maksuaika kuukausina") #Toinen frame btn = Button(frame2,text="Laske",command=Kayttoliittyma) btn.grid() l4 = Label(frame2) l4.grid() l5 = Label(frame2) l5.grid() checkVar = IntVar() check = Checkbutton(frame2,text="Lataa",variable=checkVar,onvalue=1,offvalue=0) check.grid() checkVar2 = IntVar() check2 = Checkbutton(frame2,text="Koko taulukko",variable=checkVar2,onvalue=1,offvalue=0) check2.grid() spin = Spinbox(frame2,from_=0,to=120) spin.grid() #Kolmas frame ruudukko = tk_tools.EntryGrid(frame3,3) ruudukko.pack() root.mainloop()
Ohjelmaan on lisätty kaksi toimintoa tiedontallennus ja tietyn kuukauden lyhennys ja korko.
Aihe on jo aika vanha, joten et voi enää vastata siihen.