Я отчаянно пытаюсь найти какое-то рабочее решение о том, как изменить интервал между буквами в текстовом представлении GTK.
Я использую python с GTK 3.6 - Кажется, что решение состоит в том, чтобы каким-то образом использовать Pango, но я не понимаю как. Так что любой работающий прототип был бы очень признателен.
Спасибо!
На основе документации GtkTextTags , которая используется в GtkTextBuffers , должен быть способ растягивать или уплотнять текст, как подчеркивание текста или выделение его жирным шрифтом.
Я пробовал это (см. Пример ниже), но это не работает для растягивающейся части. Однако я где-то читал, что шрифт должен поддерживать растяжение. Так что, возможно, это проблема используемого шрифта.
Не совсем рабочий пример того, как документация говорит нам, как это должно работать:
#!/usr/bin/python
from gi.repository import Gtk
import pango
class TextViewWindow:
def __init__(self):
self.window = Gtk.Window()
self.window.set_default_size(400, 400)
self.textview = Gtk.TextView()
self.textbuffer = self.textview.get_buffer()
tag_table = self.textbuffer.get_tag_table()
stretched_tag = self.textbuffer.create_tag("str", stretch=pango.STRETCH_EXPANDED)
tag_table.add(stretched_tag)
bold_tag = self.textbuffer.create_tag("bld", weight=pango.WEIGHT_BOLD)
tag_table.add(bold_tag)
underline_tag = self.textbuffer.create_tag("und", underline=pango.UNDERLINE_SINGLE)
tag_table.add(underline_tag)
self.textbuffer.set_text("Here is some text: normal.\n")
sob, eob = self.textbuffer.get_bounds()
self.textbuffer.insert_with_tags_by_name(eob, "Here is some text: expanded.\n", "str")
sob, eob = self.textbuffer.get_bounds()
self.textbuffer.insert_with_tags_by_name(eob, "Here is some text: bold.\n", "bld")
sob, eob = self.textbuffer.get_bounds()
self.textbuffer.insert_with_tags_by_name(eob, "Here is some text: underlined.\n", "und")
self.window.add(self.textview)
self.window.show_all()
self.window.connect('destroy', lambda w: Gtk.main_quit())
def main():
app = TextViewWindow()
Gtk.main()
if __name__ == "__main__":
main()