Начиная свое приключение с python Tkinter Я только что попытался разработать Entry, которая принимает только даты. Тем не менее, это больше, чем просто проверка записи. Я пытался скоординировать «внешний вид» содержимого, добавляя «/» в надлежащие позиции, чтобы иметь правильный формат даты (дд / мм / а-а-а-а). Проблема в том, что если я вставлю символ вместо другого, используя метод Entry или StringVar, функция проверки больше не будет работать для любой другой вставки в Entry.
В чем проблема с этим решением? Есть ли способ заставить его работать?
Вот код, который я разрабатывал:
from tkinter import *
root = Tk()
def f(att):
print(att)
if len(att) == 0:
return True
elif len(att) == 1 and att in "123":
return True
elif len(att) == 2 and att.isdigit() and int(att) < 32:
return True
elif len(att) == 3 and att[-1] != "/":
ent.insert(END, "/")
return True
else:
return False
ent = Entry(root, validate="key")
ent["validatecommand"] = (ent.register(f), "%P")
ent.pack(pady=10, padx=10)
ent.focus()
root.mainloop()