我有一个固定大小的 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."
最佳答案
我没有时间对此进行测试,但按照这些思路应该可以满足您的需求:
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 点,直到文本最终适合。随意将 size -= 100 调整为您喜欢的任何增量(它越小越慢但粒度越细)。
让我知道这是否不完全,我可以稍后对其进行完善。
关于python - 如何自动调整文本大小以适应固定大小的 PyGTK 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709819/