http://www.perlmonks.org?node_id=1029912


in reply to Tk Update

Replace your my $lb line with:
my $lb=update_time($mw)->pack(@top);
and you update_time subroutine with:
sub update_time { my $mw = shift; my $time=UnixDate('now',"The time is: %r on %B %d, %Y"); my $lbl = $mw->Label(-text=>"$time"); $mw->update; $mw->after(1); return $lbl; }

Replies are listed 'Best First'.
Re^2: Tk Update
by dabella12 (Acolyte) on Apr 29, 2013 at 15:22 UTC

    The function still does not update the time

      How about this?:

      use strict; use warnings; use Tk; use Date::Manip; my $time = UnixDate('now',"The time is: %r on %B %d, %Y"); my $mw = MainWindow->new( -title => 'Time Test' ); my @pack_opts = qw/-fill both -padx 2 -pady 2 -expand 1/; my $frm = $mw->Frame( -bd => 2 )->pack; my $lbl = $frm->Label( -text => $time )->pack(@pack_opts); my $oper = $frm->Button( -text => "Entrada De Operaciones", -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $client = $frm->Button( -text => 'Informe De Clientes', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $general = $frm->Button( -text => 'Informe General', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $util = $frm->Button( -text => 'Utilidades', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $exit = $frm->Button( -text => 'Exit Application', -command => sub { $mw->destroy }, )->pack(@pack_opts); $mw->repeat( 1000 => sub { update_time() } ); MainLoop; sub update_time { my $time = UnixDate( 'now', "The time is: %r on %B %d, %Y" ); $lbl->configure( -text => $time ); }

      Or even better, with Tk::StrfClock:

      use strict; use warnings; use Tk; use Tk::StrfClock; my $mw = MainWindow->new( -title => 'Time Test' ); my @pack_opts = qw/-fill both -padx 2 -pady 2 -expand 1/; my $frm = $mw->Frame( -bd => 2 )->pack; $frm->StrfClock()->pack(@pack_opts); my $oper = $frm->Button( -text => "Entrada De Operaciones", -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $client = $frm->Button( -text => 'Informe De Clientes', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $general = $frm->Button( -text => 'Informe General', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $util = $frm->Button( -text => 'Utilidades', -command => sub { print "Hello World\n" }, )->pack(@pack_opts); my $exit = $frm->Button( -text => 'Exit Application', -command => sub { $mw->destroy }, )->pack(@pack_opts); MainLoop;

      Regards, Stefan

        Thanks that works perfectly</>