O'Reilly logo

Mastering Perl/Tk by Nancy Walsh, Stephen Lidie

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Creating and Filling a Listbox

To create a Listbox widget, use the Listbox method on the parent of the Listbox:

$lb = $parent->Listbox( [ options ...] )->pack;

The Listbox method returns a reference to the Listbox that you’ve created. You can now use this reference to configure the Listbox, insert items into the Listbox, and so on. After creating a Listbox, use the insert method to insert items into it:

$lb->insert('end', @listbox_items);
# or...
$lb->insert('end', $item1, $item2, $item3);

The insert method takes an index value as the first argument; the rest of the arguments will be considered items to put into the Listbox. Listbox indexes are similar to the Entry widget indexes except they refer to lines instead of individual characters.

We could use a Listbox instead of Radiobuttons to select our window background color (see Chapter 4 for the Radiobutton example). The Listbox code looks like this:

$lb = $mw->Listbox(-selectmode => "single")->pack(  );
$lb->insert('end', qw/red yellow green blue grey/);
$lb->bind('<Button-1>', 
          sub { $lb->configure(-background => 
                             $lb->get($lb->curselection(  )) );
              });

The -selectmode option limits the number of selections to one. We insert some colors from which to choose. There is no -command option for a Listbox, so we use bind (see Chapter 15) to make something happen when the user clicks on an item with the left mouse button. Using the Listbox methods get and curselection, we determine which item the user clicked on and then set the background ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required