Tk::JComboBox ist eine recht umfangreiche Implementierung eines Kombinationsfelds. Die Tk::JCombobox deckt dem Funktionsumfang von Tk::Optionmenu und Tk::BrowseEntry locker ab.
Das Widget bringt ein umfangreiches Tutorial mit, welches die Funktionsvielfalt zusammen mit Code-Beispielen erläutert: Exploring Tk::JComboBox - A Tutorial.
#!perl
use strict;
use warnings;
use Tk;
use Tk::JComboBox;
my $variable;
my $mw = MainWindow->new;
my $jcb = $mw->JComboBox(
-choices => [
{ -name => 'Black', -value => '#000000' },
{ -name => 'Blue', -value => '#0000ff' },
{ -name => 'Green', -value => '#008000' },
{ -name => 'Purple', -value => '#8000ff' },
{ -name => 'Red', -value => '#ff0000' },
{ -name => 'Yellow', -value => '#ffff00' }
],
-textvariable => \$variable,
)->pack;
$jcb->Subwidget('Entry')->bind('', [\&submit, $jcb]);
$jcb->focus;
$mw->MainLoop();
sub submit {
my ($entry, $jcb) = @_;
print "\nSubmit Called\n";
my $index = $jcb->getSelectedIndex();
print "Index: $index \n";
print "value: " . $jcb->getSelectedValue() . "\n";
print "name: " . $jcb->getItemNameAt($index) . "\n";
print "textvariable: $variable \n";
}