如何自动调整文本大小以适合固定大小的PyGTK标签?

时间:2011-01-17 03:32:36

标签: python gtk label pygtk autoresize

我有一个固定大小的gtk.Label。我想自动调整文本大小,使其适合Label。使用不固定宽度的字体是否有一种优雅的方法呢?

my_label = gtk.Label()

# Short text segment
my_label.set_text( "Short text segment." )

# Long text segment
### Determine required text size here. ###
my_label.set_text( "This is a really long text segment that I would like to resize."

1 个答案:

答案 0 :(得分:0)

我没有时间对此进行测试,但这些方面的内容应该做你想做的事情:

size = 12000 # thousandths of a point
temp_label = gtk.Label(my_label.get_text())
while temp_label.get_width() > my_label.get_width():
    size -= 100
    temp_label.set_attributes(pango.Attrlist().insert(pango.AttrSize(size))
my_label = temp_label

这假设您直接强制my_label的宽度。如果my_label从其他东西(如父容器)获取宽度,则将my_label.get_width()替换为您想要的最大宽度。

实际上,这只是将字体大小逐渐减少1/10点,直到文本最终适合。随意调整大小 - = 100到你喜欢的任何增量(越小它就越慢,但它将更精细)。

请告诉我,如果不是这样,我可以稍后进行改进。