как ввести дату (гггг / мм / дд) в Python tkinter Entry Widget без использования tkcalendar - PullRequest
0 голосов
/ 11 апреля 2020

Привет! Я создаю форму ввода пользователя, в которой есть несколько виджетов ввода (около 20), в которых 4 виджета ввода связаны с вводом даты

Для этих виджетов ввода даты, когда пользователь пытается ввести Input_Date в формат ГГГГ / ММ / ДД , например, когда пользователь вводит ГОД , следующий символ должен быть автоматически '/' , затем МЕСЯЦ с последующим '/' и ДАТА

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


from tkinter import *
def date_val(val):
    def callback(val):
        text=val.get()
        if len(text) in (4,7):
            val.insert(END,'/')
            val.icursor(len(text)+1)
        elif len(text) not in (5,8):
            if not text[-1].isdigit():
                val.delete(0,END)
                val.insert(0,text[:-1])
        if len(text) > 10:
            val.delete(0,END)
            val.insert(0,text[:10])
    val.trace("w", lambda name, index, mode, val=val: callback(val))

if __name__ == "__main__": 

    root = Tk()

    td = StringVar()
    td_1 = StringVar()
    td_2 = StringVar()
    td_3 = StringVar()
    td_4 = StringVar()

    T_Date_field = Entry(root, textvariable=td)
    date_val(td)

    T_Date_field_1 = Entry(root, textvariable=td_1)
    date_val(td_1)

    T_Date_field_2 = Entry(root, textvariable=td_2)
    date_val(td_2)

    T_Date_field_3 = Entry(root, textvariable=td_3)
    date_val(td_3)

    T_Date_field_4 = Entry(root, textvariable=td_4)
    date_val(td_4)

    T_Date_field.grid(row=2, column=1, padx=5, pady=5)
    T_Date_field_1.grid(row=3, column=1, padx=5, pady=5)
    T_Date_field_2.grid(row=4, column=1, padx=5, pady=5)
    T_Date_field_3.grid(row=5, column=1, padx=5, pady=5)
    T_Date_field_4.grid(row=6, column=1, padx=5, pady=5)

    root.mainloop() 

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...