TypeError:float()参数必须是字符串或数字,而不是'IntVar'

时间:2018-07-05 04:53:06

标签: python tkinter

因此,让我首先说我才刚刚开始学习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 :(得分:1)

r不是数字,它是一个对象。您不能将其转换为浮点数,但是可以转换其值。更改此:

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

对此:

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