[pygtk] Label a different font sizes

Vláďa vladovi at atlas.cz
Thu Apr 17 16:15:21 WST 2008


Thank you for your reply. I know I have to use "set_use_markup(True)". 
All of the Pango markup attributes work for me except of font size. At 
the top of the page you are referring there is an example:

<span foreground="blue" size="100">Blue text</span>

So I think my code is correct. The problem is, that the first value 
(size="14") in my example is also used for the second line, although I 
specified new size (size="10"). The strange thing is that if I use 
attributes like "large" or "small" then it works. Unfortunately my 
English is rather weak, so I'm not sure if I can explain it clearly. 
Here is a short sample code to show the problem:

#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import pango

class HelloWorld:
    def hello(self, widget, data=None):
        print "Hello World"

    def delete_event(self, widget, event, data=None):
        print "delete event occurred"
        return False

    def destroy(self, widget, data=None):
        print "destroy signal occurred"
        gtk.main_quit()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)
        self.window.set_border_width(10)
        self.button = gtk.Button()
        self.label = gtk.Label('<span size="20">Text 1</span>\n<span 
size="10">Text 2</span>\n<span size="small">Text 3</span>')
        self.label.set_use_markup(True)
        self.button.add(self.label)
        self.button.connect("clicked", self.hello, None)
        self.button.connect_object("clicked", gtk.Widget.destroy, 
self.window)
        self.window.add(self.button)
        self.window.show_all()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    hello = HelloWorld()
    hello.main()

The button label has 3 lines, the first 2 have size 14, the last one is 
small. But the second line should have size 10. What is wrong in my code?

Thank you


John Finlay napsal(a):
> Vláďa wrote:
>> Hi,
>>
>> I have a question regarding labels and Pango.
>>
>> I want to use different sizes of font, but unfortunately it doesn't 
>> work. If I use
>>
>> self.label = gtk.Label('<span size="14">Text 1</span>\n<span 
>> size="10">Text 2</span>')
>>
>> then only the first size definition (14) is taken into account. The 
>> second line has the same font size.
>>
>> Is this a feature, bug or my fault? Hot to create a label with 
>> different font sizes in it?
> First you have to tell the label to use Pango markup:
>
> self.label.set_use_markup(True)
>
> Then you have to specify a readable size since numerical sizes are in 
> thousandths of a point - see:
>
> http://www.pygtk.org/docs/pygtk/pango-markup-language.html
>
> John
>


More information about the pygtk mailing list