3
in perl Tk我想問一下如何在使用-command選項時獲取調用小部件。如何從Perl/TK中的子例程獲取調用者小部件?
我有一個對話框小部件是由以前未知數量的條目動態創建的。有Entry-widget和每個按鈕旁邊可以瀏覽Entry的可能(有用的)字符串。
因此,如果按下第二個條目旁邊的按鈕,則結果應該存儲在第二個條目中,依此類推。
該代碼如下所示。
my $count = 0;
my @name =();
my @val =();
my @edit =();
my @button =();
my $fr = $wind->Frame->pack;
foreach (@outputs) {
$name[$count] = helper::trim($_);
$val[$count] = '';
$fr->Label(-text => $name[$count])->grid(-row => $count, -column => 0, -sticky => 'w');
$edit[$count] = $fr->Entry(-textvariable => \$val[$count], -width => 30)->grid(-row => $count, -column => 1);
$button[$count] = $fr->Button(-width => 20, -text => 'Select',
-command => sub { &select(\$val[$count], \$edit[$count]); }
)->grid(-row => $count, -column => 2);
$count++;
}
然而,由於&選擇被稱爲後完成對話框中建$數總是在最後的價值,我沒有得到的信息,我已經按了哪個鍵。行如
-command => sub { &select(\@val, \@edit, $count); }
也沒有工作。
是否有某種方法可以獲得調用子例程的窗口小部件(這樣我就可以在各自的按鈕中以某種方式存儲必要的信息),或者在這種調用中使用實際值(這裏是$ count)?
此致敬禮。
完美,非常感謝。不過,這個解決方案看起來很簡單,但我在搜索時沒有找到這個。有人可以解釋$ Tk :: widget的含義嗎? – Nemesis