首页 > 解决方案 > 我正在使用 TKinter,它说存在浮点转换错误

问题描述

我正在使用 TKinter,它说第 14-18 行存在浮点转换错误。我正在尝试制作复利公式。

from Tkinter import Tk, Label, Entry
master = Tk()
master.title('Compound Interest Calculator')
master.geometry('1000x1000')
Label(master, text="Principal Amount").grid(row=0)
Label(master, text="Time").grid(row=1)
Label(master, text="Interest rate").grid(row=2)
Label(master, text="Compounded (per year)").grid(row=3)
Label(master, text="Final").grid(row=4)
prin = Entry(master)
time = Entry(master)
ir = Entry(master)
c = Entry(master)
A1=float(prin.get())         #error in this line and the 4 lines that follow it
A2=float(time.get())
A3=float(ir.get())
A4=float(c.get())
final = A1 * (((1 + (A3/A4)) ** (A4*A2)))
prin.grid(row=0, column=1)
time.grid(row=1, column=1)
ir.grid(row=2, column=1)
c.grid(row=3, column=1)
final.grid(row=4, column=1)
master.mainloop()

谢谢。

标签: pythontkinter

解决方案


问题是当您调用时,.get()他会获取条目的值并返回,因为它仍然是空的,所以他会抛出错误。要解决这个问题,您应该添加一个带有回调的按钮,当按下按钮时,他将获取值并进行数学运算。试试下面的代码,应该可以正常工作:

from Tkinter import Tk, Label, Entry, Button

def get_values():
  global master

  A1 = float(prin.get())
  A2 = float(time.get())
  A3 = float(ir.get())
  A4 = float(c.get())
  final = A1 * (((1 + (A3/A4)) ** (A4*A2)))

  Label(master, text=str(final)).grid(row=4, column=1)

if __name__ == "__main__":
  master = Tk()
  master.title('Compound Interest Calculator')
  master.geometry('1000x1000')

  Label(master, text="Principal Amount").grid(row=0)
  Label(master, text="Time").grid(row=1)
  Label(master, text="Interest rate").grid(row=2)
  Label(master, text="Compounded (per year)").grid(row=3)
  Label(master, text="Final").grid(row=4)

  prin = Entry(master)
  time = Entry(master)
  ir = Entry(master)
  c = Entry(master)
  prin.grid(row=0, column=1)
  time.grid(row=1, column=1)
  ir.grid(row=2, column=1)
  c.grid(row=3, column=1)

  Button(master, text="OK", command=get_values).grid(row=5, column=1)
  master.mainloop()

推荐阅读