2017-05-02 1 views
0

축소/확대에 선택에서 TTK :: 트 리뷰를 방지하고, 선택 변경 리스너 :어떤 expandible 하위 트리에, 그래서 간단한 트 리뷰가 있어요 하위 트리

ttk::treeview .tree 
pack .tree -expand 1 -fill both 

.tree tag configure disabled -foreground grey 
.tree tag bind all <<TreeviewSelect>> "puts selected" 

set node [.tree insert {} end -text "Node 0" -tags all] 
.tree insert $node end -text "A" -tags "all" 
.tree insert $node end -text "B" -tags "all" 
.tree insert $node end -text "C" -tags "all" 
set node [.tree insert {} end -text "Node 1" -tags all -open 1] 
.tree insert $node end -text "X" -tags "all" 
.tree insert $node end -text "Y" -tags "all" 
.tree insert $node end -text "Z" -tags "all" 

그것은 그 TCL/TK는 것 같다 사용자가 노드 요소 왼쪽에있는 확장 아이콘을 클릭하여 하위 트리를 확장/축소하려고하면 자동으로 하위 트리 노드 (노드 0 "resp"노드 1 ")를 선택하고 수신기를 호출합니다.

항목을 동시에 선택하지 않고 하위 트리를 확장/호출 할 수있는 방법이 있습니까?

내 개발 플랫폼은 Tcl/Tk-8.6 (데비안/스트레치)이지만 모든 솔루션은 플랫폼 간 호환이 가능합니다.

답변

1

이와 비슷한 기능이 작동합니다.

package require Tk 

variable vars 

proc sel { args } { 
    variable vars 
    if { $vars(skip) && $vars(oldsel) ne {} } { 
    .tree selection set $vars(oldsel) 
    set vars(skip) false 
    return 
    } 
    set vars(skip) false 
    set vars(oldsel) [.tree selection] 
} 
proc op { args } { 
    variable vars 
    set vars(skip) true 
} 
proc cl { args } { 
    variable vars 
    set vars(skip) true 
} 

ttk::treeview .tree 
set id1 [.tree insert {} end -id id1 -text id1] 
set id1-1 [.tree insert $id1 end -id id1-1 -text id1-1] 
set id1-2 [.tree insert $id1 end -id id1-2 -text id1-2] 
set id2 [.tree insert {} end -id id2 -text id2] 
set id2-1 [.tree insert $id2 end -id id2-1 -text id2-1] 
set id2-2 [.tree insert $id2 end -id id2-2 -text id2-2] 
bind .tree <<TreeviewSelect>> sel 
bind .tree <<TreeviewOpen>> op 
bind .tree <<TreeviewClose>> cl 
pack .tree 

set vars(oldsel) {} 
+0

oldsel이 비어 있지 않으면 건너 뛰기를 건너 뛰는 이유는 무엇입니까? (현재 * no * 선택 사항이있는 경우 문제가 계속 표시됨). 물론 'TreeviewOpen'과'TreeviewClose'를 동일한 핸들러에 바인딩 할 수 있습니다 ... –

+0

선택 항목을 처음으로 {}로 설정할 수 없습니다 (존재하지 않음, 건너 뛰기가 거짓 임). 물론,'oldsel'을 디폴트 셀렉션으로 초기화한다면, 당신은 그 테스트를 필요로하지 않습니다. –

관련 문제