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

如何获取TCL/Tk Treeview中被点击行的节点ID?

获取TreeView被点击行的节点ID的简便方法

嘿,这个问题我太懂啦!你现在的代码只能拿到一些基础事件参数,但TreeView本身提供了专门的方法来直接获取被点击行的节点ID,不用绕弯路。

核心思路是利用TreeView的identify方法,结合坐标转换定位点击的行:

  • 先把事件里的屏幕Y坐标(%Y)转换成TreeView组件内部的垂直坐标,用canvasy方法实现
  • 再用identify row方法传入转换后的Y坐标,就能直接拿到对应行的节点ID了

修改后的完整代码如下:

#! /usr/bin/env wish
ttk::treeview .tree -selectmode none
.tree tag bind clickable <ButtonRelease> {
    # 将屏幕Y坐标转换为TreeView组件内部的垂直坐标
    set y [%W canvasy %Y]
    # 获取被点击行的节点ID
    set item_id [%W identify row $y]
    puts "被点击的节点ID: $item_id"
}
.tree configure -height 2
.tree insert {} end -id A -text A -tags clickable
.tree insert {} end -id B -text B -tags clickable
pack .tree

运行这段代码后,点击A行会输出被点击的节点ID: A,点击B行则输出被点击的节点ID: B,完全匹配你的需求。

如果之后需要更精细的定位(比如判断点击的是哪一列),还可以用identify column方法配合转换后的X坐标,用法和identify row类似哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:35:46