我需要不断更改TextView
部分的样式以进行语法突出显示。然而,大约1,000 Gtk.TextTags
它变得极其缓慢。我不想使用Gtk.SourceView
,因为我想自己自定义样式。看起来很奇怪1000个标签足以使TextView
不稳定,因为文字处理文档可能有那么多。
此代码给出了一个缓慢的例子。使用1,000个字符时,它开始花费大约半秒钟来更新标签。
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_default_size(600, 400)
self.scrolledwindow = Gtk.ScrolledWindow()
self.textview = Gtk.TextView()
buffer = self.textview.get_buffer()
buffer.create_tag("tag", background="orange")
buffer.connect("end-user-action", self.action)
self.scrolledwindow.add(self.textview)
self.add(self.scrolledwindow)
def action(self, buffer):
start = buffer.get_start_iter()
veryend = buffer.get_end_iter()
buffer.remove_all_tags(start, veryend)
end = buffer.get_iter_at_offset(1)
for i in range(len(buffer.get_text(start, veryend, False))//2+1):
buffer.apply_tag_by_name("tag", start, end)
start.forward_chars(2)
end.forward_chars(2)
win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
我可以加快速度吗?有没有解决方法?
答案 0 :(得分:0)
如果有人通过Google找到了这个问题,让我告诉您,这里的问题是删除所有标签并再次添加。当然,这是非常耗时的操作,不应以这种方式进行编码。