The subroutine below attempts to create a Tk window sized to closely fit the text in @ChapterText. It was developed in the try and try again method and is kludgy. It mostly works, but sometimes it leaves too much white space at the bottom of the window.
Is there a way to size a Tk window to fit it's contents?
sub DisplayChapter
{
my ($Chapter) = shift;
my @ChapterText = GetChapter($Chapter);
my $MaxLineLength = 0;
foreach(@ChapterText)
{
if(length($_) > $MaxLineLength)
{
$MaxLineLength = length($_);
}
}
my $GeometryString = ($MaxLineLength * 8) . 'x' . (scalar(@Chapter
+Text) * 21);
$mw->geometry($GeometryString);
$mw->title(' ' x ((($MaxLineLength - 2) / 2) + 5) . (sprintf('%7s',
+ Number2Roman($Chapter))));
$OutputText->delete('1.0', 'end');
$text->tagConfigure(centered => -justify => 'center');
foreach my $Line (@ChapterText)
{
$text->insert('end', $Line, 'centered');
}
$OutputText->pack(qw/-side bottom -fill both -expand 1/);
}