如何在Tcl/Tk中向treeview添加复选框?

如何在Tcl/Tk中向treeview添加复选框?,tcl,tk,Tcl,Tk,我想在ttk::treeview中添加复选框 我读了一些文档,发现无法添加复选框以添加到ttk::treeview。还有其他选择吗?treeview小部件不够复杂,不需要做很多工作也不行。(您可以通过定义检查行和未检查行的样式并使用绑定在它们之间进行切换来近似实现此功能……但这将非常可怕和脆弱。)是的,这意味着您无法使用它完成所有操作,但这反过来也使小部件的API更易于学习。这总是一个棘手的设计权衡 您最好的选择可能是,它有一个声誉,就是能够做任何您可能想到的任何事情,您可能想要做的树(或表,或

我想在ttk::treeview中添加复选框


我读了一些文档,发现无法添加复选框以添加到ttk::treeview。还有其他选择吗?

treeview小部件不够复杂,不需要做很多工作也不行。(您可以通过定义检查行和未检查行的样式并使用绑定在它们之间进行切换来近似实现此功能……但这将非常可怕和脆弱。)是的,这意味着您无法使用它完成所有操作,但这反过来也使小部件的API更易于学习。这总是一个棘手的设计权衡


您最好的选择可能是,它有一个声誉,就是能够做任何您可能想到的任何事情,您可能想要做的树(或表,或网格)小部件。曾经但据我所知(不是它的用户),它的使用相当棘手;我听人建议TkTreeCtrl总是用额外的代码包装,以将其API限制在您需要的特定用途。

我确实在ttk:treeview中使用复选框,但在第一列中使用了普通代码

在treeview的第一列(称为#0,或“树”)中,您可以指定一个图像(例如,选中图标和未选中图标),就像为标签指定图像一样

$win.tv item $item -image icon_checked
图形部分到此为止。对于不太脏的部分:

  • 为树视图的每一行创建一个状态列表(例如:“tvstatus”{0 0 1 0})
  • 创建一个过程 “tv_刷新”,根据列表“tvstatus”更新每一行
  • 在treeview上创建一个绑定,该绑定: 1更改列表“tvstatus”中一项的值 2呼叫“电视刷新”

精确地向用户询问您想要的更具体的答案。

我在comp.lang.tcl上找到了一个解决方案。请参见

您应该引用该文章以及链接。谷歌URL并不保证在任何时候都保持有效。(唉。)