Я хочу отобразить все мои маринованные значения в списке. Однако, когда я запускаю программу и нажимаю кнопку, которая переводит меня на страницу, где будут отображаться все значения, мне показывается только одно значение. Это значение с последнего запуска программы. Когда я закрываю программу и повторяю попытку, она отображает значение из моей последней попытки.
вот о чем я говорю: https://imgur.com/a/m79BkMY
Это код, где происходит травление и отображение данных.
class Streak():
def __init__(self, action, streak_num, day, hour, minute, stored_streaks):
self.action = action
self.streak_num = streak_num
self.day = day
self.hour = hour
self.minute = minute
def get_time(self):
self.action = app.frames[PageOne].action_text.get()
self.streak_num = int(app.frames[PageOne].streak_num_text.get())
self.day = int(app.frames[PageOne].due_day.get())
self.hour = int(app.frames[PageOne].due_hour.get())
self.minute = int(app.frames[PageOne].due_minute.get())
stored_streaks = {}
total = (self.day * 86400) + (self.hour * 3600) + (self.minute * 60)
streak_input = {"action": self.action , "streak_num": self.streak_num,
"total": total}
store_streak = stored_streaks.update(streak_input.copy())
with open("streak.pkl", "wb") as wpickle_file:
pickle.dump(stored_streaks, wpickle_file)
print(streak_input)
app.show_frame(PageTwo)
def read_file(self):
with open("streak.pkl", "rb") as pickle_file:
stored_streaks = pickle.load(pickle_file)
#stored_streaks.update(streak_input) ## comeback to this
return stored_streaks
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
streak_title = tk.Label(self, text="New Streak", font=XLARGE_FONT)
streak_title.pack()
action_label = tk.Label(self, text="Action", font=LARGE_FONT)
action_label.pack(anchor="w", padx=30, pady=10)
self.action_text = tk.Entry(self, width=250)
self.action_text.pack(anchor="w", padx=30)
streak_num_label = tk.Label(self, text="Streak #", font=LARGE_FONT)
streak_num_label.pack(anchor="w", padx=30, pady=10)
self.streak_num_text = tk.Entry(self, width=250)
self.streak_num_text.pack(anchor="w", padx=30, pady=10)
day_label = tk.Label(self, text="Day(s)")
day_label.pack()
self.due_day = tk.Entry(self)
self.due_day.pack()
hour_label = tk.Label(self, text="Hour(s)")
hour_label.pack()
self.due_hour = tk.Entry(self)
self.due_hour.pack()
minute_label = tk.Label(self, text="Minute(s)")
minute_label.pack()
self.due_minute = tk.Entry(self)
self.due_minute.pack()
get_time_btn = tk.Button(self, bg="medium purple", text="Add",
command=lambda: Streak.get_time(self))
get_time_btn.pack()
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
test_label = tk.Label(self, text="TEST", font=XLARGE_FONT)
test_label.pack()
streak_list = Streak.read_file(self)
action_list = streak_list.get("action", "none")
display_list = [action_list]
for action_list in display_list:
list = tk.Button(self, bg="medium purple", text=action_list)
list.pack()
back_btn = tk.Button(self, bg="medium purple", text="BACK",
command=lambda: controller.show_frame(PageOne))
back_btn.pack()
Я включил печать, чтобы убедиться, что функция get_time работает. С первого изображения это было напечатано:
{'action': 'first', 'streak_num': 1, 'total': 120}
Когда я печатаю streak_list, он печатает данные, которые были введены до закрытия программы