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

4

我有一个固定大小的gtk.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

我没有时间测试这个,但是大致上应该可以做到你想要的:

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到您喜欢的任何增量(它越小,速度越慢但粒度越细)。

如果还不太行,请告诉我,我稍后可以进行修改。


我明白你的意思,但是gtk.Label似乎没有get_width函数。 - wwwilliam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接