Tkinter Entry小部件浮点数

时间:2015-07-18 23:37:43

标签: python tkinter python-3.4

我正在制作一个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"

1 个答案:

答案 0 :(得分:3)

选项为textvariable,而不是stringvariable

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

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