Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Tk Formatting

by NateTut (Deacon)
on Oct 22, 2009 at 18:59 UTC ( #802784=perlquestion: print w/ replies, xml ) Need Help??
NateTut has asked for the wisdom of the Perl Monks concerning the following question:

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/); }

Comment on Tk Formatting
Select or Download Code
Replies are listed 'Best First'.
Re: Tk Formatting
by keszler (Priest) on Oct 22, 2009 at 19:21 UTC
    For many widgets, $widget->height($widget->reqheight) will work. (and also s/height/width/g).

    Assuming that you're using some form of a Tk::Text for the @ChapterText, I'd suggest using the textbox's height and width (which set the widget size based on the font used) and then resize the MainWindow based on $text->reqheight and $text-reqwidth.

Re: Tk Formatting
by lamprecht (Friar) on Oct 22, 2009 at 21:41 UTC

    maybe a Tk::Message widget would make that easier:

    perl -MTk -e"tkinit->Message(-text=>qq/Multiline Text \n/x5,-justify => 'center')->pack; MainLoop"
    Cheers, Christoph

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://802784]
Approved by Argel
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2015-11-29 07:33 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (748 votes), past polls