@DanOK17

Как мне реализовать сохранение предыдущего сеанса в python?

Суть в том, что программа должна каждую минуту записывать данные окна text в json file. а при повторном запуске считывать их. Но данные никак не хотят считываться.
import json
from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import askopenfile, asksaveasfile

file_name = NONE



def new_file():
    global file_name
    file_name = "Без названия"
    text.delete('1.0', END)

def save_as():
    out = asksaveasfile(mode="w", defaultextension=".txt")
    data = text.get('1.0', END)
    try:
        out.write(data.rstrip())
    except Exception:
        messagebox.showerror("Не получилось сохранить файл!")

def open_file():
    global file_name
    inp = askopenfile(mode='r')
    if inp is None:
        return
        file_name = inp.name
    data = inp.read()
    text.delete('1.0', END)
    text.insert('1.0', data)

def restart_font():
    global font
    font = str(entry.get())
    if font == "":
        messagebox.showerror("Ошибка", "Поле ввода шрифта пусто")
    else:
        text.config(font=font)

def autosave():
    way = "last_node.json"
    text_save = text.get('1.0', END)
    with open(way, "w", encoding='utf-8') as f:
        json.dump(text_save, f, indent=4, ensure_ascii=False)
    root.after(60000 * 1, autosave)
#        f.write(text_save)


root = Tk()
root.title("Notes")
root.resizable(width=True, height=True)
root.geometry("1200x700")


font = StringVar()


frame_ent = Frame(root, bg="grey")
text = Text(root, font=font, width=400, height=300)
entry = Entry(frame_ent, textvariable=font, width=600, font=20)
frame_base = Frame

text.place(relheight=0.95, relwidth=0.6, rely=0.05)
frame_ent.place(relheight=0.3)
entry.pack(side=TOP)




menu_bar = Menu(root)
file_menu = Menu(menu_bar)
file_menu2 = Menu(menu_bar)
second_menu = Menu(file_menu2)

file_menu.add_command(label="Новая заметка", command=new_file)
file_menu.add_command(label="Открыть файл", command=open_file)
file_menu.add_command(label="Сохранить как", command=save_as)
file_menu2.add_command(label="Enter font", command=restart_font)


menu_bar.add_cascade(label="Файлы", menu=file_menu)
menu_bar.add_cascade(label="Вид", menu=file_menu2)


root.config(menu=menu_bar)

way = 'last_node.json'
with open(way) as f:
    insert = json.load(f)
    print(f"{insert}")
text.insert(INSERT, insert)

#autosave()

root.mainloop()
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
@DanOK17 Автор вопроса
Я не понял почему, но я изменил имя файла и все заработало...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы