2012-01-09 8 views
7

ho il seguente codice, che usa pygtk:Pango attributi 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) 

sto cercando di portarlo a pygobject, ma non esiste una categoria Pango.AttrFamily, né Pango.AttrWeight, né Pango .AttrForeground (e non riesco a creare un'istanza di Pango.AttrSize).

La domanda è: come utilizzare pango_attr_size_new, pango_attr_weight_new, pango_attr_family_new e pango_attr_foreground_new tramite l'istruzione?

So che potrei usare markup per fare questo, ma 1. usare gli attributi manterrebbe le cose più semplici e 2. Voglio sapere cosa sta succedendo qui! Ho già passato molto tempo a cercare di risolverlo.

+0

Sei arrivato da qualche parte con questo? Sto avendo lo stesso problema. –

+0

FIY, ecco il problema rilevante: https://bugzilla.gnome.org/show_bug.cgi?id=646788 (invariato dal 2014) –

+0

Questo non è stato ancora risolto. Ma puoi risolverlo usando il nuovo sistema CSS: '#mylabel {color: blabla; etc;} ', imposta' self.label.set_name ("mylabel") 'e quindi importa il file CSS' Gtk.CssProvider.load_from_file (Gtk.CssProvider_get_default(), file) '. –

risposta

1

Edit: Poiché il metodo è deprecato override_font si dovrebbe usare i CSS, come descritto in questa pagina - https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-font

Il resto della risposta rimane per scopi di storia.

Non ho idea del motivo per cui non funzionerebbe.

Ecco un metodo per farlo.

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) 

Finora il modo più semplice che ho trovato per farlo. Risposta tardiva, ma meglio tardi che mai.

Nel caso in cui alcune risorse per Pango e utilizzando il codice di cui sopra. Non sono sicuro che tutta la documentazione di Pango si applichi a gtk3, ma ha funzionato per me.

Pango context set font description

Pango font description

Pango fonts in gtk

Pango layout

GtkWidget inherited by text editors tra gli altri oggetti.

+0

Non utilizzare questo codice. 'override_font' è stato deprecato. https: //developer.gnome.org/GTK3/stabile/GtkWidget.html # gtk-widget di-override-font –

0

da questo mail ho trovato che questo viene eseguito senza errori di runtime:

from gi.repository import Pango 

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

anche se nel mio codice questo non ha fatto il contenuto adeguamento alla ragione, ma io potrebbe avere un altro errore nel mio codice. La cosa più importante qui è che il codice sopra sembra essere la traduzione per roba come pygtk import pango e: pango.ALIGN_RIGHT

Questa non è la risposta completa a OP, ma si spera che un passo più vicino.

Problemi correlati