TypeError: аргумент float () должен быть строкой или числом, а не IntVar - PullRequest
0 голосов
/ 05 июля 2018

Итак, позвольте мне начать с того, что я только начинаю изучать Python, поэтому любая ошибка в моем коде связана с этим фактом.

В любом случае, я пытался создать простой калькулятор для объема сферы, поэтому я пошел и создал этот VVV

import cmath

pi = cmath.pi

r = input("radius length: ")

V = 4 * pi * (float(r)**3)/3

print(V)

exit = input("Click enter to exit ")

Да, я знаю, супер просто, верно? Ну, допустим, я пытался использовать TKinter для создания более визуально привлекательной версии этого, но с треском провалился и не знаю как.

Это ужасно написанный код VVV

from tkinter import *
import cmath

root = Tk()

r = IntVar()
pi = cmath.pi

askradius = Label(root, text="Enter radius")
askradius.grid(row="1", column="0")
radius = Entry(root, textvariable=r)
radius.grid(row="1", column="1")


V = 4 * pi * (float(r)**3)/3


Result = Label(root, text=V)
Result.grid(row="0", columnspan="2")


root.mainloop()

Я знаю, что не так много делал правильно, но помнил, что это только то, что я могу придумать с небольшим количеством информации, к которой у меня есть доступ. Как бы то ни было, чтобы подвести итог тому, что я делал, позвольте мне сказать, что я «внедряю код объемного объема в виджеты TKinter, но, поскольку я почти ничего не знаю о TKinter, я где-то напутал и получил ошибку».

ошибка говорит:

TypeError: аргумент float () должен быть строкой или числом, а не IntVar

1 Ответ

0 голосов
/ 05 июля 2018

r это не число, это объект. Вы не можете конвертировать его в число с плавающей точкой, но вы можете конвертировать его значение. Изменить это:

V = 4 * pi * (float(r)**3)/3

к этому:

V = 4 * pi * (float(r.get())**3)/3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...