Criei e preenchi um tkinter.Listbox
. Agora tenho eventos que selecionarão o item no índice index
. Assim:
listbox.selection_clear(0, tk.END)
listbox.select_set(index)
E funciona porque a entrada com índice index
é de fato selecionada.
No entanto, ao usar as teclas "tab" para navegar até outros widgets que também têm o poder de selecionar itens naquela caixa de listagem e, em seguida, retornar à caixa de listagem, há uma seleção de sombra , que parece não ser a âncora (pelo menos, listbox.selection_anchor(index)
não resolveu o problema para mim) na seleção que estava ativa quando deixei o foco nela pela última vez listbox
. Usar as teclas "para cima" e "para baixo" assumirá o controle da seleção ativa. No entanto, elas não começarão na seleção correta ( 010_adf
no exemplo abaixo), mas naquela sombra ( 007_adf
) que só posso especificar mais detalhadamente fornecendo esta captura de tela:
Fig.: A "sombra" em questão está ao redor da entrada 007_adf
. A seleção correta é 010.adf
. Como sincronizar a sombra com a seleção correta?
select_set(index)
Marca o item como selecionado (destacado).activate(index)
Define o foco do teclado para o item, garantindo que a linha tracejada apareça nele. Um foco padrão em linha pontilhada será exibido até você ativar. Assim, as teclas de seta do teclado apenas selecionam a opção. Useactivate(index)
para ativar.você pode pensar dessa forma. quando
listbox.select_set(index)
elistbox.activate(index)
aplicado consecutivamente, é o mesmo que selecionar e inserirEnquanto o clique esquerdo do mouse é considerado como se o item fosse selecionado e inserido também.
Essa "sombra" designa o item ativo na caixa de listagem. Pense nela como um cursor em um widget de texto. Você pode defini-la com o
activate
método .Se quiser ocultá-lo completamente, você pode definir
activestyle='none'
. Ou você pode defini-lo ao definir a seleção: