so habe ich eine einfache treeview, mit einigen erweiterbaren Unterbäumen, und ein Zuhörer für die Auswahl Änderungen kollabiert:verhindern ttk :: treeview von der Auswahl auf den Ausbau/Teilbäume
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"
Es scheint, dass Tcl/Tk wird Wählen Sie automatisch einen Subtree-Knoten ("Node 0" bzw. "Node 1") und rufen Sie den Listener auf, wenn der Benutzer versucht, den Teilbaum zu expandieren (durch Klicken auf das Expander-Icon links vom Knotenelement).
Gibt es eine Möglichkeit, Erweiterung/Aufruf des Teilbaums zuzulassen, ohne das Element gleichzeitig auszuwählen?
Meine Dev-Plattform ist Tcl/Tk-8.6 (auf Debian/stretch), aber jede Lösung soll plattformübergreifend funktionieren.
ich verstehe jedoch nicht wirklich, warum Sie das Überspringen überspringen, wenn das oldsel nicht leer ist (da dies immer noch das Problem zeigt, wenn es zur Zeit * keine * Auswahl gibt). und natürlich könnten Sie sowohl "TreeviewOpen" als auch "TreeviewClose" an denselben Handler binden ... –
Die Auswahl kann nicht beim ersten Mal auf {} gesetzt werden (existiert nicht, skip ist falsch). Wenn Sie 'oldsel' auf eine Standardauswahl initialisieren, brauchen Sie diesen Test natürlich nicht. –