类似的验证功能不起作用

Similar validation functions don't work

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

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

我感觉问题出在这里:

except:
    return False

可能最大长度部分不适用于 try-except... 但是:

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

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

text 是一个 int ...你不能调用 len(int) ...它会引发异常

试试这个

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