Команда проверки Python Tkinter не работает после удаления записи - PullRequest
0 голосов
/ 02 октября 2018

В моей программе виджет ввода больше не проверяется после того, как к нему была применена команда удаления - идея состоит в том, что, если он удовлетворяет определенному требованию, текст в поле автоматически удаляется, но продолжает проверять ввод.

from tkinter import *

TEXT_TO_MATCH = 'APPLE'

def validate(userinput):
   if userinput == TEXT_TO_MATCH:
       print(True)
        input_box.delete(0, END)
   else:
        print(False)
   return True

window = Tk()

window.title('Delete after validation')

reg = window.register(validate)

input_box = Entry(window, validatecommand=(reg, '%P'), validate='all')
input_box.pack()

window.mainloop()

1 Ответ

0 голосов
/ 03 октября 2018

Виджет записи автоматически сбрасывает параметр validate на «none» при редактировании виджета записи из функции проверки.

Вы можете повторно включить проверку с помощью after_idle для сбросаОпция validate после того, как управление вернулось к mainloop

def validate(userinput):
    if userinput == TEXT_TO_MATCH:
        input_box.delete(0, END)
        input_box.after_idle(lambda: input_box.configure(validate="all"))
    return True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...