Я использую TKinter, и он говорит, что есть ошибка преобразования с плавающей точкой - PullRequest
0 голосов
/ 19 февраля 2019

Я использую 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()

Спасибо.

1 Ответ

0 голосов
/ 19 февраля 2019

Проблема в том, что когда вы вызываете .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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...