类似的验证功能不起作用

时间:2016-07-02 18:50:48

标签: python python-3.x validation tkinter tkinter-entry

首先,抱歉不使用OOP,我只是决定避免这么小的程序的复杂性。 所以这是我的程序(基本上,它是一个Entry小部件,它允许一个只包含最大长度为5的整数的文本):

self.rooms.get(returned_scene)

工作正常。但是当我对验证函数的主体进行一些改动时,它不起作用:

from tkinter import *
root = Tk()
root.title("Entry Validation")
root.geometry("300x100")

def validation_function(text):
    if len(text) <= 5:
        try:
            text = int(text)
            return True
        except:
            return False
    else:
        return False

vcmd = root.register(validation_function)
entry = Entry(root, validate='key', validatecommand=(vcmd, "%P"))
entry.pack()

我觉得问题出在这里:

def validation_function(text):
    try:
        text = int(text)
        if len(text) <= 5:
            return True
        else:
            return False
    except:
        return False

可能最大长度部分与try-except不一样......但是:

except:
    return False

正常工作。但是只有最大长度部分,我也希望它只允许整数。我在第一个例子中完成了它,但我的问题是:当我用唯一的整数部分更改最大长度部分的位置时,为什么它不起作用?

1 个答案:

答案 0 :(得分:3)

textint ...您无法致电len(int) ...它会引发异常

试试这个

def validation_function(text):
    try:
        int(text)
    except:
        return False
    if len(text) <= 5:
        return True
    return False