pango属性与pygobject

时间:2012-01-09 03:39:39

标签: python gtk3 pygobject pango

我有以下代码,它使用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)。

问题是:如何通过instrospection使用pango_attr_size_newpango_attr_weight_newpango_attr_family_newpango_attr_foreground_new

我知道我可以使用markup来做到这一点,但是1.使用属性会让事情变得更简单2.我想知道这里发生了什么!我已经花了很多时间试图解决它。

2 个答案:

答案 0 :(得分:1)

修改:由于不推荐使用方法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 context set font description

Pango font description

Pango fonts in gtk

Pango layout

GtkWidget inherited by text editors以及其他对象。

答案 1 :(得分:0)

从这个mail我发现这没有运行时错误:

    from gi.repository import Pango

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

虽然在我的代码中这并没有使内容与右对齐,但我的代码中可能会有另一个错误。最重要的是,上面的代码似乎是pygtk内容的翻译,例如import pango和:pango.ALIGN_RIGHT

这不是OP的完整答案,但希望更接近一步。