juo has asked for the wisdom of the Perl Monks concerning the following question:

I would like to create a widget which is using the Text option and the pack function in combination with the Scrollbar function. I have not been able to let the horizontal scrollbar work. It will always wrap off the text and put it on another line instead of enable the scrollbar. See example

#!/perl/bin/perl use Tk; # sel_report(); # ###################### Main Graphical GUI activation sub sel_report{ my $wjob = MainWindow->new; $wjob->title("GRAPHICAL COMPARE"); $testo=$wjob->Text( -borderwidth =>2, -relief => 'solid', -height +=> 40, -width => 120)->pack(); $ugo = $testo->Scrolled("Text")->pack(); open (FILE, "c:/tmp/compare_results.txt") || die "cazzo fai"; while(<FILE>){ $ugo->insert('end', "Page 1 Compare results ( UNIT ARE IN MM ) X Position Y Position JOB Name Step1 Step2 + Ref.Layer ====================================================================== +================================== -57.4763925 33.9636075 demosmall novpl vpl + results_layer_top -52.3963925 33.9636075 demosmall novpl vpl + results_layer_top -6.6763925 44.1236075 demosmall novpl vpl + results_layer_top 18.22361 8.06361 demosmall novpl vpl + results_signal_2 18.22361 13.14361 demosmall novpl vpl + results_signal_2 23.30361 13.14361 demosmall novpl vpl + results_signal_2 53.78361 23.30361 demosmall novpl vpl + results_signal_2 53.78361 28.38361 demosmall novpl vpl + results_signal_2" ); } close (FILE); MainLoop; }

Replies are listed 'Best First'.
Re: Using scrollbar in combination with Text and pack function
by juo (Curate) on May 27, 2002 at 12:32 UTC

    I have found how to do it. It's just a little bit more of code. The scrollbars have to get linked to the text widget and wrap mode should be set to none.

    #!/perl/bin/perl use Tk; # sel_report(); # ###################### Main Graphical GUI activation sub sel_report{ my $mw = MainWindow->new; $mw->title("GRAPHICAL COMPARE"); $wjob = $mw->Frame()->pack(-side => 'top', expand => 1, -fill => ' +both'); $scrollbarver = $wjob->Scrollbar()->pack(-side => 'left', -fill => + 'both'); $scrollbarhor = $wjob->Scrollbar(-orient => 'horizontal')->pack(-s +ide => 'bottom', -fill => 'both'); $testo=$wjob->Text( -borderwidth =>2, -relief => 'solid', -height +=> 40, -width => 100 , -wrap => 'none' , -yscrollcommand => ['set' => + $scrollbarver], -xscrollcommand => ['set' => $scrollbarhor]); #$testo=>Scrolled("Text", - scrollbars => 'se')->pack(); $scrollbarver->configure(-command => ['yview' , $testo]); $scrollbarhor->configure(-command => ['xview' , $testo]); $scrollbarver->pack(-side => 'right', -fill => 'y'); $scrollbarhor->pack(-side => 'bottom', -fill => 'x'); $testo->pack(-side => 'bottom', fill => 'both', -expand =>1); $testo->insert('end', Page 1 Compare results ( UNIT ARE IN MM ) X Position Y Position JOB Name Step1 Step2 + Ref.Layer ====================================================================== +================================== -57.4763925 33.9636075 demosmall novpl vpl + results_layer_top -52.3963925 33.9636075 demosmall novpl vpl + results_layer_top -6.6763925 44.1236075 demosmall novpl vpl + results_layer_top 18.22361 8.06361 demosmall novpl vpl + results_signal_2 18.22361 13.14361 demosmall novpl vpl + results_signal_2 23.30361 13.14361 demosmall novpl vpl + results_signal_2 53.78361 23.30361 demosmall novpl vpl + results_signal_2 53.78361 28.38361 demosmall novpl vpl + results_signal_2 ); MainLoop; }