TypeError:无法腌制MplCanvas对象

时间:2018-07-05 08:34:17

标签: python matplotlib typeerror dump dill

我正在尝试将一个相当复杂的对象另存为一个看起来像

的文件
import methods
import vars
import matplotlib
import numpy

class Awesome:
    def __init__(self, canvasHandle, x, y):
        self.alpha = 'jada'
        self.bravo = 'bla'
        self.graphic, = canvasHandle.ax.plot(x,y,'r-')
        ... 
    def show(self):
        self.graphic.set_visible(True)
    def hide(self):
        self.graphic.set_visible(False)

但是,当我运行莳萝

with open('awesome.job', 'wb') as outputFile:
    dill.dump(self.awesome), outputFile)

我得到了错误:

TypeError: can't pickle MplCanvas objects

无论内部有什么内容,如何将对象保存到文件中?可读性并不重要,它只需要转储内存并将其恢复生命...

1 个答案:

答案 0 :(得分:0)

我找到了解决方案: 现在,我只传递包含的图形对象,而不是传递画布对象(我这样做是为了通过“ mpl_connect”捕获事件)。使用“ mpl_connect”捕获事件也可以在图形画布上使用,不仅适用于较高级别的画布(因此无需传递它)。现在,莳萝可以正确地保存对象!