gpt4 book ai didi

python - 使用 dill 库时出现 TypeError : can't pickle _tkinter. tkapp 对象

转载 作者:行者123 更新时间:2023-12-02 10:56:09 27 4
gpt4 key购买 nike

所以,我有这样的课:

class Category:
def __init__(self,name):
self.bt = Button(t, text = name, command = lambda : opencategory(name))
self.packing()
def packing(self):
self.bt.pack(fill = X)
def pack_forg(self):
self.bt.pack_forget()
然后我创建类别对象列表,例如:
list_cat = [Category("a"), Category("b"), Category("c")]
我使用 dill 模块将此列表保存到文件中:
   if list_cat != []:
with open("file.pkl","wb") as f2:
dill.dump(list_cat, f2)
但是当我运行它时,它会返回 TypeError: can't pickle _tkinter.tkapp我对任何类型的解决方案持开放态度,使用 JSON、pickle、dill 或其他任何东西。
这是一个完整的工作代码:
from tkinter import *
import os.path
from os import path
import dill

t = Tk()
t.title("test7")
t.geometry("100x300")
a = 1
list_cat = []

if path.exists("test777.pkl"):
with open("test777.pkl","rb") as filee:
list_cat = dill.load(filee)

def opencategory(sampletext):
print(sampletext)

class Category:
def __init__(self,sampletext):
self.bt = Button(t, text = sampletext, command = lambda : opencategory(sampletext))
self.packing()
def packing(self):
self.bt.pack(fill = X)
def pack_forg(self):
self.bt.pack_forget()


def save_c():
if list_cat != []:
with open("test777.pkl","wb") as file:
dill.dump(list_cat, file)
def add_c():
global a
list_cat.append(Category(a))
a += 1


save = Button(t, text = "save", command = save_c)
save.pack(fill = X)
add = Button(t, text = "add", command = add_c)
add.pack(fill = X)


for i in list_cat:
i.packing()

最佳答案

您正在尝试 pickle 对象列表。这些对象中的每一个都包含一个小部件。你不能 pickle 小部件。根本做不到。

关于python - 使用 dill 库时出现 TypeError : can't pickle _tkinter. tkapp 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63645920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com