python - 读写列表,Python Pickle
问题描述
我用一个列表制作了一个程序,这个列表包含在组合框中。我想将列表写入文件以便稍后再次读取列表,即使在程序重新启动后也是如此。
我试过这个:
import tkinter as tk
from tkinter import ttk
import pickle
# window
win = tk.Tk()
win.title("menu")
List = []
newList = []
with open('data.txt', 'wb') as f:
pickle.dump(List, f)
with open('data.txt', 'rb') as f:
newList = pickle.load(f)
# button click event
def clickMe():
List.append(name.get())
numberChosen.configure(values=List)
# text box entry
ttk.Label(win, text="Eingabe:").grid(column=0, row=0)
name = tk.StringVar()
nameEntered = ttk.Entry(win, width=12, textvariable=name)
nameEntered.grid(column=0, row=1)
# button
action = ttk.Button(win, text="Enter", command=clickMe)
action.grid(column=2, row=1)
# drop down menu
ttk.Label(win, text="Auswahl:").grid(column=1, row=0)
number = tk.StringVar()
numberChosen = ttk.Combobox(win, width=12)
numberChosen['values'] = [List]
numberChosen.grid(column=1, row=1)
win.mainloop()
解决方案
您只需要在 mainloop 之后将列表保存到文件中,并在程序开始时加载它。
with open('data.txt', 'rb') as file:
data = pickle.load(file)
...
win.mainloop()
with open('data.txt', 'wb') as file:
pickle.dump(data, file)
这将在开始时加载列表,并在 tk 窗口关闭后保存。
推荐阅读
- ios - 如何解决此错误:无法将类型“__NSCFString”(0x10354a248)的值转换为“UIImage”(0x104c42b48)
- python - Python中的块对角Schur分解
- java - 如何使用 URI + STRING(用户输入)
- java - Spring NamedJDBCTemplate 在执行插入语句时为 SQL 提供未分类的 SQLException
- prolog - 通过类似宏的元编程创建 Prolog 谓词
- android-tv - Android 电视在睡觉后卡顿(小米盒子 4)
- python - 如何为刽子手游戏创建列表和测试
- javascript - 提交后的控制台日志显示 Uncaught TypeError: $.ajax is not a function for my Wordpress site
- javascript - 为什么花括号和/或空格会有所不同?
- arduino - 通过 i2c 连接 arduino 和 esp 32 时出错