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

Treeview调用selection_set()高亮行后如何获取对应行的iid?

解决Treeview selection_set()后无法通过focus()获取iid的问题

嘿,我懂你碰到的这个小坑了——你用selection_set()高亮了Treeview的特定行,但调用tv.focus()却拿不到对应的iid,对吧?这其实是因为Treeview的「选中状态」和「焦点」是两个独立的东西:selection_set()只是把目标行标记为选中高亮,但并没有把控件的焦点转移到这个项目上,所以默认focus()会返回空值。

给你两个实用的解决方案,看你需求选:

方案1:直接获取选中集合(最省事)

既然你已经用selection_set('0')指定了要选中的行,那完全可以通过tv.selection()来获取当前选中的所有iid。这个方法会返回一个包含选中项iid的元组,单选场景下取第一个元素就行:

tv4.selection_set('0')
# 获取选中的iid集合
selected_items = tv4.selection()
if selected_items:
    target_iid = selected_items[0]
    print(target_iid)  # 这里会输出 '0'

方案2:手动设置焦点后再获取

如果你确实需要让焦点落在目标行上(比如后续要做键盘导航相关的操作),那可以在selection_set()之后,手动调用focus()并传入目标iid,之后再调用tv.focus()就能拿到结果了:

tv4.selection_set('0')
# 手动把焦点设置到目标iid上
tv4.focus('0')
# 现在调用focus()就能返回对应的iid了
print(tv4.focus())  # 输出 '0'

简单总结下:selection_set()管的是「哪些行被选中高亮」,focus()管的是「当前哪个行拥有焦点」,两者互不影响。所以要么直接从选中集合里取iid,要么手动把焦点绑定到目标行再获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:48:12