如何获取发送到Tcl中的过程的列表内容?

时间:2018-07-05 20:43:05

标签: tcl tk

我有一个TCL过程,该过程对返回的列表的已加载包进行函数调用。当我用llindex查询列表中的条目数时,它是准确的。但是,当我将该列表发送到填充Tk列表框的过程时,该列表没有条目。 llindex函数指出列表中的整数个数为零。对于一段代码,在我的主要代码中有:

set ents [pw::Grid getAll -type pw::Connector]
makeWindow . $ents

$ ents中包含17个元素。然后在我的 makeWindow 过程中,我有:

makeWindow {root args} {
    label $base.targetDeltaTxt -text "Target Cell:"
    entry $base.targetDelta -cursor {} -textvariable entry
    ...
    set num_cons [expr ([llength $args]-1)]
    ...
}

$ num_cons为1,但发送时为17。在TCL中,向过程发送列表似乎会将所有列表元素连接成一行文本。为什么?

1 个答案:

答案 0 :(得分:0)

您正在遇到这样一个事实,即proc的最后一个参数名为“ args”会引起特殊的行为。有关详细信息,请参见https://www.tcl.tk/man/tcl8.6/TclCmd/proc.htm。将参数从args重命名为其他任何名称,例如ents应该可以解决问题。