Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: making a GUI for a web client

by keszler (Priest)
on Jul 14, 2004 at 10:54 UTC ( [id://374261]=note: print w/replies, xml ) Need Help??


in reply to making a GUI for a web client

Assign a textvariable to the label. Anywhere you currently print, set the textvariable instead. You'll have to make the textvariable global, or pass it to the subroutine.

You may want to $mw->update; to see the change immediately.

$fr1->Label(-textvariable=>\$lblStatus, -background=>'yellow', etc. ... $lblStatus = "Download failed: " . $request->status_line . " Retrying +$i... \n"

Replies are listed 'Best First'.
Re^2: making a GUI for a web client
by dannoura (Pilgrim) on Jul 14, 2004 at 11:38 UTC

    Thanks for the reply. I may be going the wrong way about this but using the code below doesn't update the label text, it produces another label.

    #! c:\perl\bin -w use strict; use Tk; my $mw=new MainWindow; $mw->minsize(qw(250 150)); $mw->title(" Tk Test 1 "); my $body=$mw->Frame(-background=>'cyan')->pack(side=>'bottom', -fill=> +'x'); my $fr1=$body->Frame(-background=>'magenta')->pack(side=>'top', -fill= +>'x'); my $txt='hi'; $fr1->Label(-textvariable=>\$txt, -background=>'yellow', -foreground=> +'red')->pack(-fill=>'y'); sleep 5; change('foo', $fr1, $mw); sleep 5; change('bar', $fr1, $mw); MainLoop(); sub change { my ($txt, $fr1, $mw)=@_; $fr1->Label(-textvariable=>\$txt, -background=>'yellow', -foregrou +nd=>'red')->pack(-fill=>'y'); $mw->update; }

    -----------------------------------

    Any comments about coding style are welcome.

      I'm not familiar with Tk, but I think he was trying to get you to do something more like this:

      #! c:\perl\bin -w use strict; use Tk; my $mw=new MainWindow; $mw->minsize(qw(250 150)); $mw->title(" Tk Test 1 "); my $body=$mw->Frame(-background=>'cyan')->pack(side=>'bottom', -fill=> +'x'); my $fr1=$body->Frame(-background=>'magenta')->pack(side=>'top', -fill= +>'x'); my $txt='hi'; $fr1->Label(-textvariable=>\$txt, -background=>'yellow', -foreground=> +'red')->pack(-fill=>'y'); sleep 5; change('foo', $fr1, $mw); sleep 5; change('bar', $fr1, $mw); MainLoop(); sub change { my ($new_txt, $fr1, $mw)=@_; $txt = $new_txt $fr1->pack(-fill=>'y'); $mw->update; }

      Again, I'm not a Tk guy, but I think the $txt variable gets tied to the label, so you just want to update the variable and get the label to refresh itself.

      Update: Just tested it here, and yup, it replaces the old label.

      Update 2: Fixed code formatting.

        Thanks! That works.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-04-19 14:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found