Почему не сохраняется переменная в json?

https://pastebin.com/64w5zQpF - вот пастбин. Не сохраняется переменная cont в строку "content" в json, а появляется просто пустота, то есть "content": "". Код фрагмента с проблемой:

def noteedit():
    window1 = Tk()
    window1.geometry('900x600')
    window1.title('Редактирование заметки')
    text = Text(window1)
    text.place(x=1, y=10)

    def textget():
        global cont
        cont = text.get(1.0, END)
        print(cont)

    newnote = {
        "content": cont
    }
    with open("./notes.json", "w") as f:
        json.dump(newnote, f)
        print(f)
    b3 = Button(window1)
    b3.place(x=10, y=400, width = 120, height = 40)
    b3.configure(text='Сохранить', command=textget)

Прошу заметить, что ошибки нет. Просто не сохраняется переменная в строку json.


Ответы (1 шт):

Автор решения: insolor

Функция textget, в которой происходит заполнение переменной cont, у вас вызывается в момент нажатия кнопки. А вы пытаетесь получить значение переменной до того как кнопка нажата, даже до того как кнопка создана. Нужно перенести сохранение в файл внутрь функции textget, чтобы сохранение также происходило после нажатия на кнопку:

def textget():
    cont = text.get(1.0, END)
    print(cont)

    newnote = {
        "content": cont
    }
    with open("./notes.json", "w") as f:
        json.dump(newnote, f)

b3 = Button(window1)
b3.place(x=10, y=400, width = 120, height = 40)
b3.configure(text='Сохранить', command=textget)
→ Ссылка