2014-09-09 1 views
0

현재 TCL 8.4.11 버전을 사용하고 있습니다. 목록 상자 위젯에 바인딩 기능을 사용할 수 있습니까?TCL에서 키보드 컨트롤을 사용하여 목록 상자 표시 항목을 선택합니까?

예를 들어, 목록 상자에 항목 집합이 표시됩니다 ... 마우스를 사용하여 항목을 선택하는 대신, 원하는 항목을 선택하기 위해 키보드의 위아래 키를 사용하고 싶습니다. 첫 번째로 목록 상자의 항목을 클릭합니다. 현재

, 난

$listbox_a bindText <ButtonPress-1>  "$listbox_a selection set" 

이 명령

날 ... 을/따기 목록 상자 항목을 선택을 위해 마우스를 사용하지만 그 후, 나는가 키보드를 사용할 수 있습니다 ... 테스트를위한 명령 아래 사용 아래쪽 화살표를 사용하여 다른 항목을 선택하십시오. 이것을 구현하기가 어렵습니까?

<KeyPress> & <Key> 모두도 ... 내 테스트 :(

... 알려 주시기 바랍니다 감사합니다 많은 ...

답변

0

리스트 박스는 자신의 클래스 바인딩의 일환으로 이미 키 바인딩이 작동하지 않습니다. 당신이해야 할 일은 <KeyPress-Return> 이벤트를위한 바인딩을 추가하는 것입니다 (간략하게하기 위해 <Return>으로 쓰여져 있습니다). 원하는 특정리스트 박스에 클래스 바인딩은 아무 것도 정의하지 않으므로 사용하지 않고 자유롭게 사용할 수 있습니다 (키 이벤트는 위젯에 포커스가있을 때만 처리됩니다.)

바인딩 내에서 목록 상자 curselection 메서드를 사용하여 실제로 무엇이 선택되었는지 확인할 수 있습니다. 지원 버전 인 TK (8.5 이상)으로 업그레이드 할 수 있다면 <<ListboxSelect>> 가상 이벤트를 사용하여 변경 사항을 추적 할 수 있습니다.이 변경 사항은 선택한 항목을 변경하는 모든 실제 이벤트에 따라 생성되지만 여기서는 필요하지 않습니다.

+0

감사 브로 ... 내가 ... 결국 을 내 목표를 달성하기 위해 관리하지만 TCL 목록 상자의 2 아래에 다른 종류의 위젯 1)와 혼동입니다 http://docs.activestate.com/activetcl/8.5 /bwidget/ListBox.html 2) http://www.tcl.tk/man/tcl8.4/TkCmd/listbox.htm#M1 두 번째 문제는 내 모든 문제를 해결하는 데 도움이됩니다. –

관련 문제