python

时间:2017-11-03 16:45:21

标签: python validation tkinter numbers

我创建了一个简单的程序,询问用户的姓名和年龄。然后,该程序将从文本框中获取详细信息,并计算出它们在5年后的年龄。

界面很好。这是我遇到困难的验证。当用户输入字母而不是数字时,程序会显示错误消息,但无论如何都会继续运行。我尝试过使用while True:循环,但这似乎只是让程序崩溃。

这是我已经写过的内容:

def calculate():
    name = (textboxName.get())
    age = (textboxAge.get())

    if age.isalpha():
        tkinter.messagebox.showinfo("Error", "The Age is invalid")
        textboxAge.delete("0","end")

    newAge = int(age)+5
    print("Hello",name)
    print("In 5 years time you will be",newAge)

我已经看过其他一些教程,但它们有点令人困惑。我将通过添加另一个elif和以下代码

来扩展它
 elif age >= 100:
        tkinter.messagebox.showinfo("Error", "You have entered a number greater than 100")
        textboxAge.delete("0","end")

但这并不像它是一个字符串而不是整数。

  • 检查数字是否已输入文本框的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

def calculate():
    name = (textboxName.get())
    age = (textboxAge.get())

    try:
        newAge = int(age)+5

    except ValueError:
        tkinter.messagebox.showinfo("Error", "The Intended Reading Age is invalid")
        textboxAge.delete("0","end")
        return

    print("Hello",name)
    print("In 5 years time you will be ",newAge)
    # ...

如果在try - 部分的某处发生错误,python不会崩溃,而是跳转到except部分。关键步骤是将age转换为整数。如果它是一个字符串,则会抛出ValueError。在这种情况下,将显示消息框,并删除文本框中的文本。然后return将停止该功能,因此其余部分将无法处理。如果try - 部分没有任何结果,则会跳过except