Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Tk Formatting

by NateTut (Deacon)
on Oct 22, 2009 at 18:59 UTC ( [id://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/); }

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
    Hi,

    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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-04-26 00:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found