Вы можете легко измерить ширину текста в определенном шрифте:
$font = $widget->Font(....); # Get the font however you want
$lineWidth = $font->measure($text); # Do this for each line; take the max
$lineHeight = $font->metrics(-linespace); # Get the height of a line; x # lines
Добавьте немного отстояния для границ и т. Д. И используйте это для установки размера верхнего уровня:
$toplevel->configure(-width=>$width, -height=>$height);
Если вы хотите контролировать не верхний уровень, проще всего это сделать, поместив содержимое во фрейм и контролируя размер этого фрейма (тот же метод, те же параметры).Также имейте в виду, что если у вас слишком много строк или слишком длинных строк, они все равно не поместятся на экране.