【发布时间】:2020-04-22 22:57:51
【问题描述】:
在 Python 3.7 中,我需要在打开节点时展开所有子节点。让我们使用以下示例:
A
--A.1
----A.1.1
--A.2
----A.2.1
----A.2.2
B
--B.1
----B.1.1
--B.2
在这个例子中,当 A 在 GUI 中展开时,A 的所有子节点也应该展开。
按照官方treeview documentation,可以绑定事件“”,该事件会在选中节点展开前立即生成。知道了这一点,我可以这样绑定事件:
tree.bind('<<TreeviewOpen>>', handleOpenEvent)
现在我可以编写一个方法来处理事件,使用来自this solution 的策略,如下所示:
def handleOpenEvent(event):
tree.item(tree.focus(), open=True) # Tried with and without
for child in tree.get_children(tree.focus()):
tree.item(child, open=True)
无论我尝试什么,此代码都不会展开所选节点上的所有子节点。我已经尝试使它扩展 A 将扩展所有 B 节点,并且确实可以工作,但是当 A 扩展时我无法扩展所有 A 节点。似乎 Treeview 正在做一些我不知道的额外基础事情。有什么想法吗?
【问题讨论】: