【问题标题】:Don't insert hyphens when using character wrap with GtkSourceView使用 GtkSourceView 使用字符换行时不要插入连字符
【发布时间】:2022-01-15 08:32:45
【问题描述】:

我有一个GtkSource.View,其环绕模式设置为Gtk.WrapMode.CHAR。当它换行时,它会在行尾插入-。我怎样才能防止这种情况发生?

在我的研究中,我发现 Pango 库有一个 attr_insert_hyphens_new(False) 函数,它返回一个 Pango.Attribute,但我不明白你打算如何使用这些 Pango 属性。


当前代码:

view = GtkSource.View()
view.set_wrap_mode(Gtk.WrapMode.CHAR)

context = view.get_pango_context()
attrList = Pango.AttrList()
layout = Pango.Layout(context)

attr = Pango.attr_insert_hyphens_new(False)
attr.start_index = Pango.ATTR_INDEX_FROM_TEXT_BEGINNING
attr.end_index = Pango.ATTR_INDEX_TO_TEXT_END
attrList.insert(attr)
layout.set_attributes(attrList)

【问题讨论】:

    标签: python gtk gtk3 pygobject pango


    【解决方案1】:

    您必须从上下文中获取 pango 属性列表,然后将新属性插入到列表中。

    在我对另一个问题here 的回答中有一个示例,其中插入了形状属性。

      PangoContext    *ctxt = gtk_widget_get_pango_context (pWidget);
      PangoAttrList   *attList = pango_attr_list_new();
      PangoAttribute  *attr;
      PangoLayout     *Pango = pango_layout_new (ctxt);
    
    
      attr = pango_attr_shape_new_with_data(&r, &r, pImg, NULL, NULL);
      attr->start_index = 0; attr->end_index = 1;
      pango_attr_list_insert (attList, attr);
      pango_layout_set_attributes (Pango, attList);
    

    【讨论】:

    • 试图实现这一点。没有错误,但行为也没有改变。我将我的代码添加到问题正文中。
    • 一个显着的区别是我附加了一个新的属性列表,而您使用的是现有的。 Pango 有点挑剔,所以看看如果你通过一个新的设置会发生什么。
    • 如果Pango.AttrList() 没有创建Pango.AttrList 的新实例,那么有人将这些Python 绑定搞砸了。无论如何,我尝试了Pango.AttrList.new(),没有任何改变。
    猜你喜欢
    • 1970-01-01
    • 2016-11-29
    • 2011-02-09
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多