in reply to Updating values in Tk Toplevel object

UPDATE: If code you posted doesn't work to do the update, I think I see why. When you create the LabEntry, you are setting -textvariable => \$user->{firstname}. Then when you retrieve from the database, you are saying: $user = $sth->fetchrow_hashref - which overwrites the the hashref $user you used in the LabEntry - if use use print "$user\n" before and after the the fetchrow_hashref, they should be different. This is the problem, to fix it, preserve $user by fetching to a different hashref, then say $user->{firstname} = $other->{firstname}.

This stuff is so cool. Having bound a variable to the -textvariable, you just change that variable and it automagically works:

#!/usr/bin/perl -w use Tk; my %User = ( firstname=>'bob' ); my $user = \%User; my $mw = MainWindow->new(); my $lbe = $mw->LabEntry(-label => "First Name", -labelPack => [-side => "left", -anchor => "w"], -width => 20, -textvariable => \$user->{firstname})->pack(-side => "top", -anchor => "ne"); my $btn = $mw->Button(-command=> sub { $user->{firstname} = ''. localt +ime})->pack; MainLoop;

Run it, click the button, be suitably impressed ;-P

--Bob Niederman, http://bob-n.com

Replies are listed 'Best First'.
Re: Re: Updating values in Tk Toplevel object
by jdtoronto (Prior) on Jul 18, 2003 at 03:35 UTC
    That works fine!

    As soon as I got back and read your comments it became pretty darned obvious. I made the change in the DBI fetch subroutine and it all works just as I wanted it to. I suppose you could say that the variable is bound, but it isn't always the same variable!

    Many thanks!

    John