GUI programs work in a different fashion than normal code. The Mainloop is the one updating the screen and if you don't return to it, nothing gets updated. So your while loop was poison for the GUI
#!/usr/bin/perl use warnings; use strict; use Tk; my ($no,$upper_no,$mw,$realend); $no=0; $upper_no=''; $mw = MainWindow->new; $mw->geometry("300x100"); $mw->title("PerlTk Test"); $mw->Label(-text => "Enter a 5 digit number") ->place(-relx => 0.0,-rely => 0.05); $mw->Entry(-takefocus => 1, -textvariable => \$upper_no, -width => 12) ->place(-relx => 0.50, -rely => 0.05); $mw->Button(-text => "Click to count upto that number and display them + below as you count", -wraplength => 250, -command => \&count) ->place(-relx => 0.5, -anchor => "center", -rely =>0.50); $mw->Label(-textvariable => \$no, -relief => 'sunken', -anchor => 'center') ->place(-relx =>0.0, -rely => 0.80, -relwidth => 1.0, -relheight = +> 0.2); MainLoop; sub count { if ($upper_no=~/^\d+$/ and $upper_no > 0) { if ($no < $upper_no) { $no++; } } }
In reply to Re: displaying program status in perl tk
by jethro
in thread displaying program status in perl tk
by jagdish.eashwar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |