Tkinter 条目小部件浮点数

Tkinter Entry widget float number

我正在制作一个 BMI 计算器,只是为了了解 tkinter。我被困在这一部分上了——我该怎么做才能从条目小部件中获取一个浮点数?

这是我的一些代码片段

获取条目输入(这是在一个名为 calculateBMI 的函数中)

hgtval = float(height.get())
wgtval = float(weight.get())

这里是创建变量和制作输入框。

hgt = StringVar()
wgt = StringVar()

height = Entry(root, stringvariable=hgt).grid(row=1, column=2)
weight = Entry(root, stringvariable=wgt).grid(row=2, column=2)

运行整个程序我报错:

C:\Python34\python.exe I:/programming/project/bmi.py
Traceback (most recent call last):
  File "I:/programming/project/bmi.py", line 35, in <module>
    height = Entry(root, stringvariable=hgt).grid(row=1, column=2)
  File "C:\Python34\lib\tkinter\__init__.py", line 2478, in __init__
    Widget.__init__(self, master, 'entry', cnf, kw)
  File "C:\Python34\lib\tkinter\__init__.py", line 2086, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown option "-stringvariable"

选项是textvariable,不是stringvariable

与此问题无关,当您执行 height = Entry(...).grid(...) 时,height 将始终是 None,因为这就是 .grid(...) returns。最好的做法是将小部件创建与小部件布局分开。

当您这样做(将创建与布局分开)时,您实际上不需要使用 StringVars,因为您可以直接从小部件本身获取值(例如:hgtval = float(height.get())