Per/Tk - text widget does not get updated

M

MoshiachNow

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
 
M

MoshiachNow

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 ?
 
D

Dave

MoshiachNow said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top