Tkinter条目验证:检查有效颜色或颜色的一部分

时间:2014-05-18 03:18:15

标签: python validation tkinter tkinter-entry

最近,我发现Entry小部件的验证选项非常有用(参见this question)。我最近尝试编写验证命令,以验证用户是在键入十六进制代码还是命名颜色。我写了这个,它适用于十六进制代码,它偶尔适用于颜色。除了其他方面,它还可以在每个按键上运行。 (validate=ALL

def checkColorValid(P):
    global backgroundColor
    if not P:
        return True

    if P.lower() in colors:
        backgroundColor = P
        return True

    if P[0] == '#':
        try:
            if len(P) == 1:
                return True
            int(P[1:], 16)
            if len(P) < 8:
                backgroundColor = P
                return True
            else:
                return False
        except ValueError:
            return False

    for color in colors:
        if color.startswith(P.lower()):
            return True

colors是所有有效命名颜色的列表 验证代码有效,除非您尝试键入命名颜色,并开始反复键入相同的字符。一旦发生这种情况,验证似乎就会停止工作。在您重新启动程序之前,它根本不会运行。

1 个答案:

答案 0 :(得分:1)

验证码可能会返回None而不是TrueFalse。也许添加最终的返回声明会有所帮助。