Вы можете хранить словарь в файле pickle или JSON, но перед тем, как сохранить его, вы должны получить значение из Entry и поместить в словарь. Это не будет делать это автоматически.
Но вы не можете получить значение непосредственно после создания Entry
, потому что это не input()
и оно не будет ждать данных. Функция mainloop()
запускает окно и все до того, как mainloop()
будет выполнено, прежде чем вы увидите окно.
Вы можете использовать Button
для запуска функции, которая сохранит ее после ввода значения в Entry
.
import tkinter as tk
import json
def load():
global data
try:
with open('data.json') as f:
data = json.load(f)
except Exception as ex:
print(ex)
def save(event=None):
# update dictionary before save
data['Andrew'][0] = int(entry.get())
with open('data.json', 'w') as f:
json.dump(data, f)
# ---
data = {
'Andrew': [67, 78, 98],
'William': [56, 90, 42],
'Anna': [90, 88, 75]
}
# load at start
load()
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
entry.insert('end', data['Andrew'][0])
button = tk.Button(root, text='Save', command=save)
button.pack()
root.mainloop()
Вместо Button
вы можете bind()
нажать Enter
для работы save
, чтобы он обновлял данные в файле.
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
entry.insert('end', data['Andrew'][0])
entry.bind('<Return>', save)
root.mainloop()