Perl TK BrowseEntry ComboBox默认选项

时间:2012-12-21 12:27:08

标签: perl combobox perltk

我已经在内部接管了一个Perl TK项目。我想知道如何设置使用BrowseEntry库的组合框的默认值。

以下是组合框的构建方式。

$tm->ComboBox(
                  -variable    => \$invoice_per_country,
                  -font        => $main::UserPref->{'ListFont'},
                  -background  => 'white',
                  -relief      => 'groove',
                  -width       => 40,
                  -takefocus   => 1,
                  -listwidth   => 60,
                  -listheight  => scalar @invoice_countries,
                  -forcematch  => '',
                  -options     => [ @invoice_countries ],
                  -buttontakefocus => 0,
                  -disabledforeground => 'black',
                  -disabledbackground => 'white'

                 )
                 ->pack(-side => 'left',
                        -anchor => 'nw');

invoice_countries包含两个值:('Canada', 'United States')。 我想知道如何在不改变值的顺序的情况下将美国设为默认值(我们将添加更多国家/地区)。

3 个答案:

答案 0 :(得分:3)

您可以使用BrowseEntry上的variable选项:

#!/usr/bin/env perl

use strict;
use warnings;
use Tk;

my @items = ('Canada', 'United States');
my $mw = MainWindow->new;
$mw->geometry('300x300');
my $default = $items[1];

my $be = $mw->BrowseEntry(-label=> 'country', -variable=> \$default,)->place(-y=> 100);
my $lb = $be->Subwidget('slistbox');
$lb->insert('end', @items);

MainLoop();

答案 1 :(得分:0)

它应该反映$invoice_per_country中的任何值,只需在打包之前将其设置为'美国'(或者甚至之后,PerlTk将跟随变量)。

答案 2 :(得分:0)

您可以使用browserentry的configure方法 $ sel-> configure(-variable =>);