f



Per/Tk - text widget does not get updated

HI,

I define the window :
my $mw = new MainWindow;  # Main Window
my $frm_name = $mw -> Frame() -> pack();
my $lab1 = $frm_name -> Label(-text=>"Enter the remote hostname or
IP:") -> pack();
my $ent1 = $frm_name -> Entry() -> pack();
my $lab2 = $frm_name -> Label(-text=>"Enter the number of iterations to
run [5]:") -> pack();
my $ent2 = $frm_name -> Entry() -> pack();
my $but = $mw -> Button(-text=>"Start nettest", -command =>\&start) ->
pack(); #Text Area
$txt = $mw -> Text(-width=>70, -height=>20) -> pack();

MainLoop;
###################################
Then in subroutine "start" I write tesxt:


    $txt -> delete("1.0",'end');
    $txt -> insert('end',"Remote Hostname:\t$REMOTE_HOST\n");
    $txt -> insert('end',"Remote IP address:\t$REMADDR\n");
    $txt -> insert('end',"My IP address:\t\t$MYADDRESS\n\n");
###################################
Then later in the same sub I create a file :

    open(FILE,">$FILE1");
    print FILE ' ' x (100 * (1024 * 1024));
    close FILE;
    chmod 0777 => $FILE1;

The problem is that the text widget is not updated till the file
creation is over (couple of minutes).Printing to STDOUT at the same
time completes immediately.
Setting "$|" to "1" did not change much,as I expected to ...

Appreciate any input.

Thanks

0
8/9/2006 9:31:55 AM
comp.lang.perl.misc 33233 articles. 2 followers. brian (1246) is leader. Post Follow

3 Replies
600 Views

Similar Articles

[PageSpeed] 35

Actualy,I now have found out that the text widget will not get updated
at all till I "return" from the "start" subroitine...
Does it mean that while the subroitine is running,I will not be able to
update the text widget  ?

0
MoshiachNow
8/9/2006 10:09:58 AM
"MoshiachNow" <lev.weissman@creo.com> wrote in message 
news:1155115915.665130.245760@n13g2000cwa.googlegroups.com...
> HI,
>
> I define the window :
> my $mw = new MainWindow;  # Main Window
> my $frm_name = $mw -> Frame() -> pack();
> my $lab1 = $frm_name -> Label(-text=>"Enter the remote hostname or
> IP:") -> pack();
> my $ent1 = $frm_name -> Entry() -> pack();
> my $lab2 = $frm_name -> Label(-text=>"Enter the number of iterations to
> run [5]:") -> pack();
> my $ent2 = $frm_name -> Entry() -> pack();
> my $but = $mw -> Button(-text=>"Start nettest", -command =>\&start) ->
> pack(); #Text Area
> $txt = $mw -> Text(-width=>70, -height=>20) -> pack();
>
> MainLoop;
> ###################################
> Then in subroutine "start" I write tesxt:
>
>
>    $txt -> delete("1.0",'end');
>    $txt -> insert('end',"Remote Hostname:\t$REMOTE_HOST\n");
>    $txt -> insert('end',"Remote IP address:\t$REMADDR\n");
>    $txt -> insert('end',"My IP address:\t\t$MYADDRESS\n\n");
> ###################################
> Then later in the same sub I create a file :
>
>    open(FILE,">$FILE1");
>    print FILE ' ' x (100 * (1024 * 1024));
>    close FILE;
>    chmod 0777 => $FILE1;
>
> The problem is that the text widget is not updated till the file
> creation is over (couple of minutes).Printing to STDOUT at the same
> time completes immediately.
> Setting "$|" to "1" did not change much,as I expected to ...
>
> Appreciate any input.
>
> Thanks
>

try adding a $mw->update; after your set of insert commands, I suspect that 
the text is added to the widget but that the window is not being repainted 
to reflect this.


0
Dave
8/9/2006 12:09:37 PM
Thanks,this was just it.

0
MoshiachNow
8/9/2006 2:52:47 PM
Reply: