PyGObject 中的 Pango 属性

9

我有以下使用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_newpango_attr_foreground_new
我知道我可以使用标记来实现这个,但是1.使用属性会让事情更简单,2.我想知道这里发生了什么!我已经花了很多时间来解决它。

你有进展吗?我也遇到了同样的问题。 - Thomas K
1
顺便提一下,这是相关问题: https://bugzilla.gnome.org/show_bug.cgi?id=646788(自2014年以来未更改) - Jan Berkel
这个问题尚未得到修复。但是,您可以使用新的CSS系统来解决问题:#mylabel {color:blabla; etc;},设置 self.label.set_name("mylabel"),然后导入CSS文件Gtk.CssProvider.load_from_file(Gtk.CssProvider_get_default(), file) - Ricardo Magalhães Cruz
2个回答

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字体描述

在gtk中使用Pango字体

Pango布局

GtkWidget被文本编辑器等其他对象继承。


不要使用这段代码。override_font已被弃用。https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-font - Ricardo Magalhães Cruz

1

从这个邮件中,我发现这个程序可以在运行时没有错误地运行:

    from gi.repository import Pango

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接