Python GTK + 3 TextView не сериализует (или десериализует?) Теги форматированного текста - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время я пишу приложение GTK + 3 с использованием python-gi, и у меня возникла одна проблема с простой задачей сериализации TextBuffer, записи его на диск и последующей загрузки с диска.

На данный момент я могу сериализовать и десериализовать обычный текст, , но он не сохраняет никаких тегов расширенного текста, введенных при вводе.

Например, если я ввел текст " Hello! " в свое приложение, то я вернусь после сериализации и последующей десериализации просто "Hello!"

Я написал свой код на основе документации и проверял его по каждому примеру, который я мог найти в Интернете, и я действительно не вижу причин, по которым это не должно работать.

У меня есть две очень простые функции для сохраненияи загрузка TextBuffer на диск и с него:

def save_buffer(self, buffer: Gtk.TextBuffer) -> str:
    """ Saves a TextBuffer to disk
    :param buffer: The buffer to be serialized
    :return: The name of the path written to
    """
    data = buffer.serialize(buffer, buffer.register_serialize_tagset(), *buffer.get_bounds())
    with open(self.path, 'wb') as file:
        file.write(data)
    return self.path

def load_buffer(self) -> Gtk.TextBuffer:
    """ Loads this Page's TextBuffer from disk
    :return: This Page's TextBuffer
    """
    buffer = Gtk.TextBuffer()
    tags = buffer.register_deserialize_tagset()
    with open(self.path, 'rb') as file:
        buffer.deserialize(buffer, tags, buffer.get_start_iter(), file.read())
    return buffer
...