输入字段的验证

时间:2019-03-22 14:33:18

标签: tkinter-entry

Interactively validating Entry widget content in tkinter

上面的链接说明了如何进行验证。

我正在尝试做同样的事情。但是不知何故我做不到。

它是一个10位数字的字符串。前两个是字母,接下来的两个数字,然后再是下两个,将是字母,然后其余的都是数字。 例如MH02UH2012。

我遇到的另一个问题是,当我运行此S的打印时,只有在没有打印后才开始输入前三个输入。有时只输出第一个输入的变量。我不明白是什么问题

import tkinter
tk=tkinter.Tk()

def only_numeric_input(P,S,i):
    i = int(i)
    print (i, S)

    if S == " ":

        return False

    elif i < 2:
        if not S.isdigit():

            return True


    elif i > 5:

        if S.isdigit():

            return True
        else:

            return False
    elif i > 9:
        return False

e1=tkinter.Entry(tk)
e1.grid(row=0,column=0)
c=tk.register(only_numeric_input)
e1.configure(validate="key",validatecommand=(c,'%P', "%S", "%i"))
tk.mainloop()

1 个答案:

答案 0 :(得分:1)

only_numeric_input函数的条件语句中存在问题。请尝试下面的only_numeric_input函数。

def only_numeric_input(P,S,i):
    i = int(i)
    print (i, S)
    if S == " ":
        return False

    if i < 2 or (i>3 and i<6):
        if S.isalpha() and S.isupper():
            return True
        else:
            return False
    elif i<10:
        if S.isdigit():
            return True
        else:
            return False
    elif i > 9:
        return False
相关问题