TypeError: невозможно выбрать объекты MplCanvas - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь сохранить довольно сложный объект в виде файла, который выглядит примерно как

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 голосов
/ 10 июля 2018

Я нашел решение: Вместо передачи объекта canvas (я сделал это для перехвата событий с помощью «mpl_connect»), теперь я только передаю содержащийся объект figure. Перехват событий с помощью «mpl_connect» также работает на холсте figure, а не только на холсте более высокого уровня (поэтому нет необходимости передавать его). Теперь укроп сохраняет объект без ошибок!

...