У меня не было времени, чтобы проверить это, но что-то в этом роде должно делать то, что вы хотите:
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 с любым шагом, который вам нравится (чем он меньше, тем медленнее, но более мелкозернистым он будет).
Дайте мне знать, если это не совсем так, и я могу уточнить егопозже.