атрибуты панго с pygobject - PullRequest
8 голосов
/ 09 января 2012

У меня есть следующий код, который использует pygtk:

attr = pango.AttrList()
attr.change(pango.AttrSize((
            50 * window_height / 100) * 1000, 0, -1))
attr.change(pango.AttrFamily("Sans", 0, -1))
attr.change(pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1))
attr.change(pango.AttrForeground(65535, 65535, 65535, 0, -1))

self.label.set_attributes(attr)

Я пытаюсь перенести его на pygobject, но нет ни класса Pango.AttrFamily, ни Pango.AttrWeight, ни Pango.AttrForeground (и я не могу создать экземпляр Pango.AttrSize).

Вопрос: как использовать pango_attr_size_new, pango_attr_weight_new, pango_attr_family_new и pango_attr_foreground_new через instrospection

Я знаю, что мог бы использовать разметку , чтобы сделать это, но 1. использование атрибутов сделает вещи проще и 2. Я хочу знать, что здесь происходит! Я уже потратил много времени, пытаясь ее решить.

Ответы [ 2 ]

1 голос
/ 20 августа 2012

Редактировать: Поскольку метод override_font устарел, вы должны использовать CSS, как описано на этой странице - https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-font

Остальная часть ответа остается для истории.

Понятия не имею, почему это не сработает.

Вот способ сделать это.

def set_global_styles(self, editor_widget):
    pango_context = editor_widget.create_pango_context()
    font_description = pango_context.get_font_description()
    increase = 14 #pt 14
    font_size = 1024*increase
    font_description.set_size(font_size)
    editor_widget.override_font(font_description)

Пока что самый простой способ найти это. Поздний ответ, но лучше поздно, чем никогда.

На всякий случай некоторые ресурсы для Pango и с использованием приведенного выше кода. Я не уверен, применима ли вся документация для Pango к gtk3, но у меня это сработало.

Описание шрифта контекстного набора Pango

Описание шрифта Pango

Pango шрифты в GTK

Макет Pango

GtkWidget, унаследованный текстовыми редакторами среди других объектов.

0 голосов
/ 06 марта 2016

из этого mail Я обнаружил, что это работает без ошибки времени выполнения:

    from gi.repository import Pango

    ren = Gtk.CellRendererText()
    ren.set_property('alignment', Pango.Alignment.RIGHT)

, хотя в моем коде это НЕ выравнивало содержимое по правому краю, но у меня может быть другойошибка в моем коде.Наиболее важным здесь является то, что приведенный выше код, по-видимому, является переводом для Pygtk вроде import pango и: pango.ALIGN_RIGHT

Это не полный ответ на OP, но, надеюсь, на один шаг ближе.

...