2011-05-12 62 views
1

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

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

我想这来自于一个事实,虽然GUI和GO的模型董事会是很好的分离,模型仍然有一个参考的意见,以推动一些东西,所以腌制可能试图腌一些tk的东西。当然,我想腌制模型,那么是否有任何方法可以告诉pickle不要关心对GUI的引用?或者解决问题的另一种方法?

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

回答

3

没错,看看到__getstate__方法。

例如,如果你想泡菜忽略“查看”属性,你会做到以下几点:

class Whatever(object): 

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