在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正在执行一些我不知道的额外底层操作。有什么想法吗?