Я действительно борюсь с сериализованными данными текстового буфера.Я только что столкнулся с проблемой кодирования SQL (спасибо theGtkNerd за помощь.) И теперь мои проблемы вернулись.Я пытаюсь добавить функциональность поиска / замены в текстовое представление, которое использует pixbufs и форматированный текст, так как у меня есть изображения / теги, хранящиеся в буфере, я пытаюсь выполнить замену в сериализованных данных буфера текстового представления.следующий код работает до тех пор, пока строка замены имеет тот же размер, что и строка поиска.
def _diagFnRReplaceAll(self,oWidget): #Replace All Function
findbox = self.builder.get_object('FnRFindEntry')
searchstr = findbox.get_text()
buf = self.dataview.get_buffer()
repbox = self.builder.get_object('FnRReplaceEntry')
repstr = repbox.get_text()
format = buf.register_serialize_tagset()
data = buf.serialize(buf, format, buf.get_start_iter(),
buf.get_end_iter())
sys.stdout.buffer.write(data) #< print raw for debugging
newdata = data.replace(bytes(searchstr,'ascii'),bytes(repstr,'ascii'))
print("\n\n\n\n")
sys.stdout.buffer.write(newdata) #< print raw for debugging
buf.set_text('')
format = buf.register_deserialize_tagset()
buf.deserialize(buf, format, buf.get_end_iter(),newdata)
если она меньше или больше, я получаю следующую ошибку.
Gtk:ERROR:../../../../gtk/gtktextbufferserialize.c:1588:text_handler: code should not be reached
я попытался изменитьтип кодировки и разные способы кодирования, но это не помогло.тот факт, что строка одинакового размера работает нормально, заставляет меня думать, что есть значение размера для сериализованных буферных данных или данных pixbuf где-то, но я не могу ничего найти, выполнив поиск.Я попытался сделать замену, как вы сделали бы для текстового обзора без фото, он работал, но потерял данные рис / формат.
Кто-нибудь знает, почему это происходит?
или кто-нибудь знает другой способ поиска и замены в виджете textview, который имеет данные pixbuf и теги форматирования?