Атрибуты pango с pygobject

У меня есть следующий код, который использует 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< /a>, pango_attr_weight_new , pango_attr_family_new и pango_attr_foreground_new через самоанализ?

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


person Marco Biscaro    schedule 09.01.2012    source источник
comment
Вы с этим чего-нибудь добились? У меня такая же проблема.   -  person Thomas K    schedule 19.08.2012
comment
К вашему сведению, вот актуальная проблема: bugzilla.gnome.org/show_bug.cgi?id=646788 (без изменений с 2014 г.)   -  person Jan Berkel    schedule 26.05.2016
comment
Это еще не исправлено. Но вы можете обойти это, используя новую систему CSS: #mylabel {color:blabla; etc;}, установите self.label.set_name("mylabel"), а затем импортируйте файл CSS Gtk.CssProvider.load_from_file(Gtk.CssProvider_get_default(), file).   -  person Ricardo Magalhães Cruz    schedule 03.07.2016


Ответы (2)


Редактировать: Поскольку метод 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 унаследован текстовыми редакторами среди других объектов.

person Quentin Engles    schedule 20.08.2012
comment
Не используйте этот код. override_font устарел. developer.gnome.org/gtk3/stable/ - person Ricardo Magalhães Cruz; 03.07.2016

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

    from gi.repository import Pango

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

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

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

person Roland    schedule 06.03.2016