You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置QTreeWidget默认全部展开?PyQt5中相关方法失效该如何解决?

问题原因

你之前调用展开方法的时机不对:

  • 你注释掉的main_tree.expandAll()是在往树里插入节点之前执行的,此时树控件内还没有任何节点,调用展开方法自然不会生效
  • 你对节点调用setExpanded(True)的时候,要么节点还没有添加子节点,要么节点还没有被挂载到QTreeWidget控件上,操作不会生效
  • 另外itemsExpandable()是读取「所有节点是否可展开」属性的方法,本身不具备设置功能,要设置该属性需要调用setItemsExpandable(True),这个方法和默认展开功能没有直接关联

解决方法

最简单的方案是在所有节点都插入到QTreeWidget之后,再调用一次expandAll(),只需要修改一行代码的位置即可:
找到你代码里的这两行:

main_tree.insertTopLevelItems(0, sublevel_1)
layout.addWidget(main_tree)

在这两行中间加一行main_tree.expandAll(),修改后如下:

main_tree.insertTopLevelItems(0, sublevel_1)
main_tree.expandAll() # 移到此处即可生效
layout.addWidget(main_tree)

如果需要自定义部分节点展开、部分折叠,也可以等所有节点都添加完成后,再对应调用对应节点的setExpanded()方法即可。

内容的提问来源于stack exchange,提问作者drn_svq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:57:02