2012-01-09 8 views
7

tengo el siguiente código, que utiliza pygtk:Pango atributos con PyGObject

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) 

estoy tratando de portarlo a PyGObject, pero no hay una clase Pango.AttrFamily, ni Pango.AttrWeight, ni Pango .AttrForeground (y no puedo instanciar un Pango.AttrSize).

La pregunta es: ¿cómo utilizar pango_attr_size_new, pango_attr_weight_new, pango_attr_family_new y pango_attr_foreground_new través de la introspección?

Sé que podría usar markup para hacer esto, pero 1. usando atributos mantendría las cosas más simples y 2. ¡Quiero saber qué está pasando aquí! Ya he pasado mucho tiempo tratando de resolverlo.

+0

¿Llegaste a algún lado con esto? Estoy teniendo el mismo problema. –

+0

FIY, aquí está la cuestión relevante: https://bugzilla.gnome.org/show_bug.cgi?id=646788 (sin cambios desde 2014) –

+0

Esto no se ha solucionado aún. Pero puede solucionarlo utilizando el nuevo sistema CSS: '#mylabel {color: blabla; etc;} ', establezca' self.label.set_name ("mylabel") 'y luego importe el archivo CSS' Gtk.CssProvider.load_from_file (Gtk.CssProvider_get_default(), file) '. –

Respuesta

1

Editar: Como es obsoleto el método override_font se debe utilizar CSS como se describe en esta página - https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-font

El resto de la respuesta se mantiene con fines de historia.

No tengo idea de por qué eso no funcionaría.

Aquí hay un método para hacerlo.

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) 

Hasta ahora, la forma más fácil que encontré para hacerlo. Última respuesta, pero mejor tarde que nunca.

Por si acaso algunos recursos para Pango y usando el código anterior. No estoy seguro de si toda la documentación de Pango se aplica a gtk3, pero funcionó para mí.

Pango context set font description

Pango font description

Pango fonts in gtk

Pango layout

GtkWidget inherited by text editors entre otros objetos.

+0

No use este código. 'override_font' ha quedado obsoleto. https: //developer.gnome.org/gtk3/stable/GtkWidget.html # gtk-widget-override-font –

0

de esta mail me encontré con que este se ejecuta sin error de ejecución:

from gi.repository import Pango 

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

aunque en mi código Esto no hizo que el contenido alinear a la derecha, pero podría tener otro error en mi código. Lo más importante aquí es que el código anterior parece ser la traducción de cosas como pygtk import pango y: pango.ALIGN_RIGHT

Esta no es la respuesta completa a OP, pero con suerte un paso más cerca.

Cuestiones relacionadas