2014-09-10 2 views
0

J'ai deux listbox es dans un petit perl/script tk. Quand je clique sur l'un, l'autre "perd le focus" et le cliqué "l'emporte". Je mets cela entre guillemets car malheureusement ces événements ne déclenchent pas "<FocusIn>" ou "<FocusOut>". L'utilisation du clavier, c'est-à-dire de la touche tab, déclenche ces dernières. J'ai aussi essayé <Enter>/<Leave> et <B1-Enter>/<B1-Leave> ainsi que <<ListboxSelect>> mais aucun d'entre eux d'atteindre ce que je dois. J'ai énuméré les événements disponibles à déclencher, mais la plupart sont liés au clavier.perl listbox tk, détecter lorsque le focus est perdu par la souris

Ce que je besoin est de désactiver un Button lorsque le second ListBox perd ce foyer (lorsque la première ListBox est cliqué sur le bouton), et l'activer quand il gagne il par la souris. Alors, comment je fais ça?

Répondre

1

Ok, j'ai trouvé une solution acceptable pour cela:

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'); } 
} 

espoir qui aide quelqu'un là-bas.

Questions connexes