我正在制作一个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"
答案 0 :(得分:3)
选项为textvariable
,而不是stringvariable
。
与此问题无关,当您执行height = Entry(...).grid(...)
时,height
始终为None
,因为这是.grid(...)
返回的内容。最好将小部件创建与小部件布局分开。
当你这样做时(将创建与布局分开)你实际上不需要使用StringVar
,因为你可以直接从小部件本身获取值(例如:hgtval = float(height.get())