perl tk listbox,通过鼠标检测焦点何时丢失

时间:2014-09-10 21:56:12

标签: perl tk

我在一个小的perl / tk脚本中有两个listbox es。当我点击一个,另一个&#34;失去焦点&#34;并点击了一个&#34;获得&#34;它。我把它放在引号中,因为不幸的是这些事件不会触发&#34; <FocusIn>&#34;或&#34; <FocusOut>&#34;。使用键盘(即tab键)会触发这些键。我还尝试了<Enter> / <Leave><B1-Enter> / <B1-Leave>以及<<ListboxSelect>>,但这些都没有实现我的需求。我列出了要触发的可用事件,但大多数都与键盘相关。

我需要的是在第二个Button失去焦点时(即,点击第一个ListBox时)禁用ListBox,并在获得它时启用它老鼠。那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

好的,我找到了一个可接受的解决方案:

my $tmp = ref $my_listbox;
$my_listbox->bind($tmp, '<<ListboxSelect>>', sub { &listbox_bind; } );

sub listbox_bind
{
    my ($self) = @_;
    if ($self == $my_listbox)
        { $my_button->configure( -state => 'normal' ); }
    else
        { $my_button->configure( -state => 'disabled' ); }
}

希望能帮到那里的人。