【发布时间】:2016-08-04 14:52:39
【问题描述】:
我正在使用 TKinter 为 GUI 制作一个基本的 BMI 计算程序来进行班级分配,但在尝试验证用户的输入时遇到了问题。 我试图只允许数字输入并停用“计算”按钮并在用户输入任何非数字时发送错误消息。但是,此时它会为单个数字(例如 2)抛出错误,但会接受多个数字(例如 23)。我对此很陌生,所以请你解释一下为什么会这样,或者是否有更好的方法来写这个?
以下是我的代码的相关部分:
#calculate button
cal = ttk.Button(main, text = 'Calculate!')
cal.grid(row = 4, column = 2)
#height entry box
hb = tk.Entry(main, textvariable = height)
hb.grid(row = 2, column = 2)
hb.bind('<Key>', lambda event: val(hb.get()))
#validation error message
vrs = tk.Label(main, text = 'Please enter a number in the box')
vrs.grid(row = 8, column = 2)
#so that its position is saved but won't appear until validation fails
vrs.grid_remove()
#validation function
def val(value):
if value.isdigit():
print('valid')
vrs.grid_remove()
cal.state(['!disabled'])
else:
print('invalid')
vrs.grid()
cal.state(['disabled'])
提前感谢您的帮助。
【问题讨论】: