小编典典

泡菜和tkinter的问题

python

要学习tkinter,我正在制作一个简单的Go游戏程序。我现在希望能够使用泡菜保存游戏,但是当我尝试泡菜时,我GoBoardModel得到:

PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>

我猜这是由于以下事实:尽管GUI和go
board的模型被很好地分开了,但是该模型仍然具有对视图的引用以推送某些内容,因此pickle可能会尝试腌制一些tk的内容。当然,我只想对模型进行腌制,是否有任何方法可以使腌制不在乎对GUI的引用?还是解决该问题的另一种方法?

我知道我可以摆脱这个参考,但是我在这里学习:)


阅读 248

收藏
2021-01-20

共1个答案

小编典典

是的,看看__getstate__方法。

例如,如果您希望泡菜忽略“视图”属性,则可以执行以下操作:

class Whatever(object):

  def __getstate__(self):
    state = self.__dict__.copy()
    del state['view']
    return state
2021-01-20