В общем, это невозможно с GTK +, потому что нет стадии, когда виджеты "согласовывают" размеры. Вместо этого виджеты сообщают свой требуемый размер, и после этого контейнер выделяет некоторые области (обычно равные или превышающие требуемые). В GTK + 3 будет согласование ширины и высоты, поэтому, если вашей кнопке (а точнее ее метке) в любом случае будет выделено несколько строк, она сможет запросить меньшую ширину и перенести свой текст.
В 2.x лучшее, что вы можете сделать, это, вероятно, использовать width_chars
свойство gtk.Label
:
import gtk
window = gtk.Window ()
align = gtk.Alignment (0.5, 0.5)
button = gtk.Button ('a very long, possibly multiline text')
label = button.child
label.props.wrap = True
label.props.width_chars = 20
window.set_default_size (500, 500)
window.connect ('destroy', lambda *ignored: gtk.main_quit ())
window.add (align)
align.add (button)
window.show_all ()
gtk.main ()