1

Тема: вибір дати в календарі

може кому потрібно календарик з можливістю вибирати дату.

def data_select(entry_insert): # entry_insert=ttk.Entry поле на зовнішній формі

    def constant_insert():
        global date_data_select

        a=datetime.datetime.now()
        date_data_select=[a.day,a.month,a.year]
        pole()    

    def back_button_select():
        global date_data_select
        date_data_select[1] = date_data_select[1] - 1
        if date_data_select[1] == 0:
            date_data_select[1] = 12
            date_data_select[2] = date_data_select[2] - 1
        text=str(date_data_select[0])+"-"+str(date_data_select[1])+"-"+str(date_data_select[2])
        entry_insert.delete(0, END)
        entry_insert.insert(0, text)
        pole()    

    def next_button_select():
        global date_data_select
        date_data_select[1] = date_data_select[1] + 1
        if date_data_select[1] == 13:
            date_data_select[1] = 1
            date_data_select[2] = date_data_select[2] + 1
        text=str(date_data_select[0])+"-"+str(date_data_select[1])+"-"+str(date_data_select[2])
        entry_insert.delete(0, END)
        entry_insert.insert(0, text)
        pole()    

    def pole():
        global string_kalendar
        string_kalendar=calendar.monthcalendar(date_data_select[2], date_data_select[1])
        text=str(date_data_select[0])+"   "+month[date_data_select[1]-1]+"   "+str(date_data_select[2])
        label1_win_data_select["text"] = text
        month_dey = calendar.monthrange(date_data_select[2], date_data_select[1])[1]
        week_dey = calendar.monthrange(date_data_select[2], date_data_select[1])[0]

        for n in range(42): deys[n]["text"] = ""
 
        for n in range(month_dey): deys[n + week_dey]["text"] = n + 1

    def date_select(y,x):
        global date_data_select
  
        if y+1 <= len(string_kalendar) :
            if string_kalendar[y][x] != 0 :
                date_data_select[0] = string_kalendar[y][x]
                text=str(date_data_select[0])+"   "+month[date_data_select[1]-1]+"   "+str(date_data_select[2])
                label1_win_data_select["text"] = text
                text=str(date_data_select[0])+"-"+str(date_data_select[1])+"-"+str(date_data_select[2])
                entry_insert.delete(0, END)
                entry_insert.insert(0, text)

    dt = ['ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'НД']
    month = ['Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень']

    win_data_select = Toplevel()
    win_data_select.title("Дата") # Дата
    win_data_select.grab_set()
    deys = []
    back_button=ttk.Button(win_data_select,text="<", width=4, command=back_button_select)
    back_button.grid(row=0, column=0, sticky=NSEW)

    label1_win_data_select = ttk.Label(win_data_select) 
    label1_win_data_select.grid(row=0, column=1, columnspan=5, sticky=NSEW)

    next_button=ttk.Button(win_data_select,text=">", width=4, command=next_button_select)
    next_button.grid(row=0, column=6, sticky=NSEW)

    for d in range(7):
        label2_win_data_select = ttk.Label(win_data_select,text=dt[d]) 
        label2_win_data_select.grid(row=1, column=d, sticky=NSEW)

    for row in range(6):
        for col in range(7):
            label3_win_data_select = ttk.Button(win_data_select, width=4, command= lambda x1=col, y1=row: date_select(y1,x1)) 
            label3_win_data_select.grid(row=row+2, column=col, sticky=NSEW)
            deys.append(label3_win_data_select)
    constant_insert()