Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Tk::BrowseEntry set function -solved

by glenn (Scribe)
on Jul 25, 2014 at 15:40 UTC ( [id://1095058]=perlquestion: print w/replies, xml ) Need Help??

glenn has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks. So because I love pain I want to know if anyone else has found such a solution to this bug lack of functionality. The BrowseEntry which provides a drop down has 3 functions: insert, delete, and get. I want a fourth 'set', rather than defining yet another global var as I already pass the obj to insert/delete I would love to be able to '->set(0)' to set the current value to index 0 of the list. Any suggestions or pointing in the correct direction would be appreciated. Thank you for your time.

Replies are listed 'Best First'.
Re: Tk::BrowseEntry set function
by zentara (Archbishop) on Jul 25, 2014 at 16:45 UTC
    You don't show any code, but this should show you how to set things. You just set your array elements, and update. You can use ->configure to set -choices and -variable
    #!/usr/bin/perl use Tk; use Tk::BrowseEntry; use strict; my @choices = (1..50); my $choice = (@choices)[0]; our $dlg = MainWindow->new(); my $blist = $dlg->BrowseEntry( -choices => \@choices, -variable => \$choice)->pack; my $lb = $blist->Subwidget("slistbox"); $blist->configure(-listcmd=>sub{$lb->focus}); MainLoop;

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
Re: Tk::BrowseEntry set function -solved
by glenn (Scribe) on Jul 25, 2014 at 19:44 UTC

    UPDATE: found problems with the previous code when having multiple BrowseEntry objects. This however works.

    #!/usr/bin/perl use Tk; use Tk::BrowseEntry; use strict; my $mw = MainWindow->new(); my $hddSel = $mw->BrowseEntry()->pack; foreach my $c (1..50) { $hddSel->insert("end",$c); } $hddSel->Subwidget("slistbox")->selectionSet(0); $hddSel->LbCopySelection($hddSel); #use the widgets internal method to + copy the selected value to the entry print "CURRENT VALUE: ".$hddSel->Subwidget("slistbox")->get((@{$hddSel +->Subwidget("slistbox")->curselection})[0])."\n"; MainLoop; sub getValue { my ($getW) = @_; return $getW->cget( '-textvariable' ); } sub setValue { my ($setW, $index) = @_; my $lb = $setW->Subwidget('slistbox')->Subwidget('listbox'); my $var_ref = $setW->cget('-textvariable'); $lb->selection('clear', 0, 'end'); $lb->selectionSet($index); $$var_ref = $lb->get($index); return; }

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1095058]
Front-paged by GotToBTru
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (5)
As of 2024-04-23 07:23 GMT
Find Nodes?
    Voting Booth?

    No recent polls found