关于tkinter的问题,未定义AnnualInterestRate

时间:2019-04-03 22:32:14

标签: python tkinter

我需要代码方面的帮助,我的任务是计算每月付款以及给定利息下的总付款。用户输入贷款金额和年份。然后,该程序使用tkinter在窗口中显示付款,直到利息达到8.0。

我的问题是我无法让我的程序显示利息,它只显示0.0,但给我错误“ annualInterestRate未定义”,该程序显示每月和总还款额很好,但只显示第一行并且不会继续显示其余的付款。

我真的是编程新手,所以请多多指教。

以下是完整文件的链接:https://pastebin.com/AUicQzu0

def Calculate(self):
    monthlyPayment = self.getMonthlyPayment(
        float(self.loanamountVar.get()),
        int(self.yearsVar.get()),
        float(self.annualInterestRateVar.get()))

    self.monthlyPaymentVar.set(format(monthlyPayment, '10.2f'))
    totalPayment = float(self.monthlyPaymentVar.get()) * 12 * int(self.yearsVar.get())
    self.totalPaymentVar.set(format(totalPayment, '10.2f'))
    self.annualInterestRateVar.set(annualInterestRate)

def getMonthlyPayment(self, loanamount, years, annualInterestRate):

    annualInterestRate = 5.0
    while annualInterestRate <= 8.0:
        monthlyInterestRate = annualInterestRate / 1200
        monthlyPayment = loanamount * monthlyInterestRate / (1 - 1 / (1 + monthlyInterestRate) ** (years * 12))
        annualInterestRate += 1.0 / 8
        return monthlyPayment

1 个答案:

答案 0 :(得分:0)

Calculate的最后一行中,您尝试从变量annualInterestRate获取值并分配给self.annualInterestRateVar

self.annualInterestRateVar.set(annualInterestRate)

但是annualInterestRate是仅存在于Calculate中的局部变量,与annualInterestRate中存在的局部变量getMonthlyPayment无关

因此,您尝试从变量annualInterestRate获取值,但没有在annualInterestRate中将任何值分配给Calculate

对于Python,您尝试从从未创建的变量中获取价值。因此,Python显示

 annualInterestRate is not defined

我不知道您尝试在self.annualInterestRateVar.set(...)中使用什么价值。如果它是来自annualInterestRate中存在的局部变量getMonthlyPayment的值,那么也许您应该从getMonthlyPayment返回它

return monthlyPayment, annualInterestRate

并加入Calculate

monthlyPayment, annualInterestRate = self.getMonthlyPayment(...)

顺便说一句:您在while的{​​{1}}循环中有错误的缩进,并且它将在第一个循环后退出getMonthlyPayment