Я написал программу для создания заметок. При сохранении заметки, программа справа выводит список заметок, но как сделать, чтобы при нажатии на записку, то она открывалось в текстовом поле. Чтобы проверить, не забудьте сделать json файл с названием "last"
import os
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():
global data
out = asksaveasfile(mode="w", defaultextension=".txt")
data = text.get('1.0', END)
try:
out.write(data.rstrip())
except Exception:
messagebox.showerror("Ошибка", "Не получилось сохранить файл!")
data2 = text.get('1.0', '1.15')
new_button = Button(frame_base, text=data2, command=open_name_file)
new_button.pack(side=TOP, pady=5, padx=5)
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.json"
text_save = text.get('1.0', END)
with open(way, "w") as f:
json.dump(text_save, f, indent=4, ensure_ascii=False)
root.after(30000 * 1, autosave)
def open_name_file():
global file_name, data
inp = askopenfile(mode='r')
data = inp.read()
text.delete('1.0', END)
text.insert('1.0', data)
#text_name = os.path.basename(os.getcwd()+file_name)
print(data)
root = Tk()
root.title("Notes")
root.resizable(width=True, height=True)
root.geometry("1200x700")
font = StringVar()
frame_ent = Frame(root, bg="grey")
frame_ent.place(relheight=0.05)
text = Text(root, font=font, width=400, height=300)
text.place(relheight=0.9, relwidth=0.90, rely=0.05)
entry = Entry(frame_ent, textvariable=font, width=600, font=20)
entry.pack(side=TOP)
frame_base = Frame(root)
frame_base.place(relheight=0.95, relx=0.9, rely=0.05)
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)
way = "last.json"
with open(way, "r") as f:
insert = json.load(f)
print(f"{insert}")
text.insert("1.0", insert)
root.config(menu=menu_bar)
autosave()
root.mainloop()