我有一个固定大小的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."
答案 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到你喜欢的任何增量(越小它就越慢,但它将更精细)。
请告诉我,如果不是这样,我可以稍后进行改进。