Шрифт изменения программно для GTK3 TextView (быстро-виджеты TextEditor)

В использовании приложения PyGI и GTK3, я пытаюсь позволить пользователю установить семейство шрифтов и размер в TextView через диалоговое окно настроек моего приложения. В PyGI объект TextView "установил" методы для нескольких свойств, но не для свойств шрифта. Я могу установить семейство шрифтов с помощью CSS с помощью поставщика стиля CSS. Но я не могу изменить тот CSS динамично для уважения шрифта, выбранного пользователем. Таким образом, как я могу сделать это? (Обратите внимание, что рассматриваемым виджетом является на самом деле TextEditor от пакета быстро-виджетов, и я использую Быстро для создания приложения.)

Редактирование для разъяснения: я не связан узами брака с использованием CSS, который просто, кажется, предпочтительный подход GTK. То, на что я надеюсь, является методом некоторого вида, как GtkTextView.setFontProperties () или что-то как этот. Я не могу найти ничего как этот для свойств шрифта.

Спасибо,

Ian

2
задан 30 August 2012 в 17:31

2 ответа

Можно установить шрифт в textview, использующем встроенную кнопку + GTK и диалоговое окно для этого, Gtk.FontButton():

#!/usr/bin/python

from gi.repository import Gtk

class TextViewWindow:
    def __init__(self):
        self.window = Gtk.Window()
        self.window.set_default_size(400, 400)

        main_vbox = Gtk.VBox(homogeneous=False, spacing=0)
        self.window.add(main_vbox)

        self.tview = Gtk.ScrolledWindow()
        main_vbox.add(self.tview)

        self.textview = Gtk.TextView()
        self.textbuffer = self.textview.get_buffer()
        self.textbuffer.set_text("Here is a text view.")
        self.textview.set_wrap_mode(Gtk.WrapMode.WORD)

        self.tview.add(self.textview)

        self.font_button = Gtk.FontButton()
        self.font_button.connect('font-set', self.on_font_set)
        main_vbox.pack_start(self.font_button, False, False, 0)

        self.window.show_all()
        self.window.connect('destroy', lambda w: Gtk.main_quit())

    def on_font_set(self, widget):
        font_description = widget.get_font_desc()
        print "You chose: " + widget.get_font()
        self.textview.modify_font(font_description)

def main():
    app = TextViewWindow()
    Gtk.main()

if __name__ == "__main__":
    main()

Моя демонстрация:

demo

Встроенное диалоговое окно:

picker

3
ответ дан 21 October 2019 в 12:00

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

Первый Вы выбрали бы весь текст, вот страница от readthedocs сайта на применении тегов.

И вот список свойств из ссылки C/C++.

Просто включение этого... Я недавно должен был сделать что-то подобное, и я должен был сделать немного надеющееся придумывать этот отрывок:

self.textview = Gtk.TextView()
self.textview.override_font(
    Pango.font_description_from_string('DejaVu Sans Mono 12')
    )
2
ответ дан 21 October 2019 в 12:00

Другие вопросы по тегам:

Похожие вопросы: