Я пытаюсь подать заявку на расчет ипотеки (у меня был мотив для этого, из вопроса ранее, здесь). Но, похоже, думал, что это не сработает. У меня проблема в том, что я не могу предоставить функции вычислений 3 входа, p, i, n, которые я получаю из опции Entry в tkinter.
import time
from tkinter import *
class MortgageCalc:
def __init__(self, master):
global p, i, n
p = IntVar()
i = IntVar()
n = IntVar()
self.clock = Label(master, font=("times", 20, "bold"), bg="white")
self.clock.pack(side='bottom', anchor='e')
self.tick()
self.title = Label(master, text="Welcome to Dev's Mortgage Calculater!", font=("times", 23, "bold"), bg="aqua")
self.title.pack(anchor=W)
self.title = Label(master, text="Enter the information below to calculate your mortgage.", font=("times", 18), bg="aqua")
self.title.pack(anchor=W)
self.P = Entry(master, width=60, textvariable=p)
self.P.pack(pady=50, padx=50)
self.I = Entry(master, width=60, textvariable=i)
self.I.pack(pady=50, padx=50)
self.N = Entry(master, width=60, textvariable=n)
self.N.pack(pady=50, padx=50)
self.calcMortgage = Button(master, text='Calculate Monthly Mortgage Payment', font=10, fg='green', command=self.calculations, width=30, height=2)
self.calcMortgage.pack(pady=50, padx=50)
self.monthlyPayment = Label(master, text="Your monthly mortgage payment is", font=("times", 20, "bold"), bg="white")
self.monthlyPayment.pack()
self.calculations()
def tick(self):
time_string = time.strftime("%H:%M:%S")
self.clock.config(text=time_string)
self.clock.after(200, self.tick)
def calculations(self):
global p, i, n
p = p.get()
i = i.get()
n = n.get()
divide1 = p * (i * (1 + i) ** n)
divide2 = ((1 + i) ** n - 1)
payment = divide1 / divide2
self.monthlyPayment.config(text=str(payment))
root = Tk()
root.title("Dev's Mortgage Calculator")
root.geometry('1025x750')
Tk = MortgageCalc(root)
root.mainloop()
Я получаю эту ошибку еще до того, как окно откроется!
Traceback (most recent call last):
File "C:/Users/muhmm/PycharmProjects/untitled2/da.py", line 60, in <module>
Tk = MortgageCalc(root)
File "C:/Users/muhmm/PycharmProjects/untitled2/da.py", line 37, in __init__
self.calculations()
File "C:/Users/muhmm/PycharmProjects/untitled2/da.py", line 53, in calculations
payment = divide1 / divide2
ZeroDivisionError: division by zero
И проблема в функции вычислений, как будто я оттуда удаляю код и помещаю «пройти», приложение работает полностью нормально.
И это имеет смысл, p - это сумма, которую вы одолжили, i - ежемесячный процент, n - количество платежей за весь срок кредита.