带有 pygobject 的 pango 属性
Posted
技术标签:
【中文标题】带有 pygobject 的 pango 属性【英文标题】:pango attributes with pygobject 【发布时间】:2012-02-05 16:58:45 【问题描述】:我有以下使用 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
?
我知道我可以使用markup 来执行此操作,但是 1. 使用属性会使事情变得更简单 2. 我想知道这里发生了什么!我已经花了很多时间试图解决它。
【问题讨论】:
你在这方面有什么收获吗?我也遇到了同样的问题。 FIY,这是相关问题:bugzilla.gnome.org/show_bug.cgi?id=646788(自 2014 年以来未更改) 此问题尚未修复。但是你可以通过使用新的 CSS 系统来解决它:#mylabel color:blabla; etc;
,设置self.label.set_name("mylabel")
,然后导入 CSS 文件Gtk.CssProvider.load_from_file(Gtk.CssProvider_get_default(), file)
。
【参考方案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 以及其他对象。
【讨论】:
不要使用此代码。override_font
已被弃用。 developer.gnome.org/gtk3/stable/…【参考方案2】:
从这个mail我发现这个运行没有运行时错误:
from gi.repository import Pango
ren = Gtk.CellRendererText()
ren.set_property('alignment', Pango.Alignment.RIGHT)
虽然在我的代码中这并没有使内容向右对齐,但我的代码中可能还有另一个错误。这里最重要的是,上面的代码似乎是 pygtk 东西的翻译,比如import pango
和:pango.ALIGN_RIGHT
这不是 OP 的完整答案,但希望更近一步。
【讨论】:
以上是关于带有 pygobject 的 pango 属性的主要内容,如果未能解决你的问题,请参考以下文章