使用tkinter条目python验证用户输入3
问题描述:
我在表单上有一个文本框和一个标签。我需要从输入框中获取数据并检查以确保其浮动。使用tkinter条目python验证用户输入3
nameOfText = (textboxName.get())
ra = float(textboxra.get())
if type(ra) == float:
print("Its a number")
else:
print("Not number")
表单工作的很好,当程序运行时它将工作。如果我在文本框中输入7,它将打印(7.0),这很好。如果我输入另一个数字并按'Go'按钮,它会说'ValueError:无法将字符串转换为浮点数:'d''
理想情况下,我希望它清除文本框。我可以得到一个消息框,但无法再次清除该文本框。
请帮忙。
答
要清除文本字段,您可以使用delete()
。要在Entry窗口小部件中从头到尾删除内容,您需要在“0”到“end”之间定义索引。对于Text小部件,您需要定义行和字符索引。 delete()
使用字符串来指示行和列。所以“1.12”将是第一行和第十二个字符。正如@BryanOakley delete()
指出的那样,数字值为1.0,但您应该使用字符串来防止正确读取其他数字的值/索引。
# for Entry widget clear.
textboxName.delete("0", "end")
# for Text widget clear.
textboxName.delete("1.0", "end")
为了检查如果变量类型为浮动:
您可以使用isinstance()
检查,如果变量是一个浮动与否。
x = 5
y = 5.0
if isinstance(x, float) == True:
print(x,"Is float")
else:
print(x,"Is not a float")
if isinstance(y, float) == True:
print(y,"Is float")
else:
print(y,"Is not a float")
结果:
5 Is not a float
5.0 Is float
在另一方面,你可以使用try/except
。人们会说使用鸭子打字(请求宽恕vs许可)。如果你期望总是看到一个浮动,那就试试吧。如果你碰巧没有得到预期的浮动,那就抛出异常。
x = 5
y = "String of text"
try:
print(float(x))
except:
print(x,"Cannot be a float")
try:
print(float(z))
except:
print(y,"Cannot be a float")
结果:
5.0
String of text Cannot be a float
文本小指标都是字符串,而不是浮动。虽然使用'1.0'是无害的,但可能导致混淆。索引'“1.10”'表示第一行字符十,但浮点值“1.10”将被解释为第一行字符1.您应该养成总是使用索引字符串的习惯。 –
@BryanOakley谢谢你指出。现在纠正。 –