3
in perl Tk -command 옵션을 사용할 때 호출 위젯을 얻는 방법을 묻고 싶습니다.Perl/TK의 서브 루틴에서 호출자 위젯을 얻으려면 어떻게해야합니까?
나는 이전에 알려지지 않은 수의 항목으로 동적으로 만들어진 대화 상자 위젯을 가지고 있습니다. 엔트리 - 위젯이 있으며 각 엔트리의 가능한 (유용한) 문자열을 탐색 할 수있는 버튼 옆에 있습니다.
따라서 두 번째 항목 옆에있는 단추를 누르면 결과가 두 번째 항목에 저장되어야합니다.
코드는 다음과 같습니다.
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