проблема с рассолом и ткинтером

1

Чтобы узнать tkinter, я делаю простую программу игры Go. Теперь я хотел бы сохранить игру, используя pickle, но когда я пытаюсь раскрыть мой объект GoBoardModel, я получаю:

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

Я предполагаю, что это происходит из-за того, что, хотя графический интерфейс и модель go board довольно хорошо разделены, модель все еще имеет ссылку на представление, чтобы подтолкнуть некоторые вещи, поэтому маринование, вероятно, пытается рассолить некоторые tk вещи. Конечно, я бы хотел рассолить только модель, так есть ли способ сказать марину, чтобы не заботиться об этой ссылке на графический интерфейс? Или другой способ решить проблему?

Я знаю, что могу просто избавиться от этой ссылки, но я здесь, чтобы узнать:)

Теги:
tkinter
pickle

1 ответ

3
Лучший ответ

Да, просмотрите метод __getstate__.

Например, если вы хотите, чтобы pickle игнорировал атрибут "view", вы сделали бы следующее:

class Whatever(object):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню