Проверка правильности ввода полей - PullRequest
0 голосов
/ 22 марта 2019

Интерактивная проверка содержимого виджета Entry в 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 Ответ

1 голос
/ 22 марта 2019

В операторах условия функции 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
...