es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No inserte guiones al usar ajuste de caracteres con GtkSourceView.

Tengo una vista GtkSource.View con el modo de ajuste configurado en Gtk.WrapMode.CHAR. Cuando se ajusta, inserta “-” al final de la línea. ¿Cómo puedo evitar eso?

En mi investigación encontré que la biblioteca Pango tiene una función attr_insert_hyphens_new(False), que devuelve un Pango.Attribute, pero no entiendo cómo se supone que se deben usar estos atributos Pango.


Código actual:

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)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes evitar la inserción de guiones al final de una línea cuando se envuelve utilizando la función attr_insert_hyphens_new(False) de la biblioteca Pango. Esta función devuelve un objeto Pango.Attribute, que puedes utilizar para establecer atributos en un widget GtkSource.View.

    Aquí tienes un ejemplo de fragmento de código que muestra cómo utilizar esta función:

    view = GtkSource.View()
    view.set_wrap_mode(Gtk.WrapMode.CHAR)
    
    context = view.get_pango_context()
    
    # Crear una nueva lista de atributos y diseño
    attrList = Pango.AttrList()
    layout = Pango.Layout(context)
    
    # Crear un nuevo atributo que deshabilita la inserción de guiones
    attr = Pango.attr_insert_hyphens_new(False)
    
    # Establecer los índices de inicio y fin del atributo
    attr.start_index = Pango.ATTR_INDEX_FROM_TEXT_BEGINNING
    attr.end_index = Pango.ATTR_INDEX_TO_TEXT_END
    
    # Agregar el atributo a la lista de atributos
    attrList.insert(attr)
    
    # Establecer los atributos del diseño
    layout.set_attributes(attrList)
    
    # Establecer el diseño de la vista
    view.set_layout(layout)
    

    Este código crea un objeto GtkSource.View con el modo de envoltura establecido en Gtk.WrapMode.CHAR y luego crea un nuevo objeto Pango.Attribute con la inserción de guiones deshabilitada. Luego se establecen los índices de inicio y fin del atributo, se agrega a una lista de atributos, se establecen los atributos de un diseño y finalmente se establece el diseño de la vista. Esto debería evitar la inserción de guiones cuando el texto en la vista se envuelve.

Comments are closed.