В настоящее время я пишу приложение 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