Не передается значение даты из entry в функцию

Лакмус_Красный

Новичок
Пользователь
Апр 19, 2023
4
0
1
Python:
import datetime
import tkinter as tk'

#....

def dateset():
     datewin = tk.Toplevel()
     datewin.title('Установка даты')
     datewin.geometry('300x60+300+200')
     datewin.resizable(False, False)
     datewin.config(bg='grey')
     tk.Label(datewin,text='Введите дату окончания учебного года(гггг-мм-дд): ').pack()
     dateentry = tk.Entry(datewin,width=13)
     dateentry.pack()
     #сохранение даты
     def agree():
         datewin.destroy()
     tk.Button(datewin,text='ОК',command=agree).pack()
     txt = dateentry.get()
     return txt
    
#... 

# Вычисление и вывод
def clicked(text):
    end_year = text.split('-')
    # исключаем неправильный формат
    try:
        indexation = datetime.date(int(end_year[0]),int(end_year[1]),int(end_year[2])) # разбиваем список по индексам
    except ValueError or UnboundLocalError:
        mb.showerror(title='Ошибка!',message='Неправильный формат! Формат должен быть (гггг-мм-дд)')
    finally:
        today_date = datetime.date.today() # сегодняшняя дата
        different = indexation-today_date # вычисляем разницу
        time_cut = different.days #оставляем только дни
        last_num = time_cut % 10 # смотрим на последнюю цифру
    # конфигурация вывода в зависимости от числа
    if last_num == 1:
        lbl.configure(text = f"Поздравляем! До конца учебного года остался {time_cut} день")
    elif 2 <= last_num <= 4:
        lbl.configure(text = f"Поздравляем! До конца учебного года осталось {time_cut} дня")
    elif 5 <= last_num <= 9 or last_num == 0:
        lbl.configure(text = f"Поздравляем! До конца учебного года осталось {time_cut} дней")

#...

btn = tk.Button(win, text = "Вычислить",font='Arial 33',command =lambda: clicked('текст'), background='yellow',activebackground='grey', width=54, height=2)
btn.pack(padx=80,pady=80)

После выполнения этого фрагмента кода при нажатии на кнопку выскакивает либо cannot access local variable 'indexation' where is not....
Либо ValueError: invalid literal for int() with base 10 'текст"

А по задумке дата введенная в новом окне сохранялась бы в переменную в главном окне и при нажатии кнопки считались бы дни.
Есть мысли как это исправить? Нужно отдавать уже завтра желательно. Это почти последний рывок, есть ещё пару вещей, а стопится все на этом(
Операционная система: windows
Python: 3.11
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
ошибки переводили?
 

Форум IT Специалистов