TCL:如何列出目录中的所有文件并为每个项目创建一个单选按钮

TCL:如何列出目录中的所有文件并为每个项目创建一个单选按钮,tcl,tk,Tcl,Tk,我正在编写一段代码,列出目录中的所有项目,然后为每个项目创建一个单选按钮。 我无法通过以下代码实现这一点: proc check_lib_name {} { global ENTRYfilename5 ENTRYfilename cd $ENTRYfilename/$ENTRYfilename5 set dirnames [glob -type d *] foreach f $dirnames { radiobutton .top.d.$dirna

我正在编写一段代码,列出目录中的所有项目,然后为每个项目创建一个单选按钮。 我无法通过以下代码实现这一点:

proc check_lib_name {} {
    global ENTRYfilename5 ENTRYfilename
    cd $ENTRYfilename/$ENTRYfilename5
    set dirnames [glob -type d *]
    foreach f $dirnames {
        radiobutton .top.d.$dirnames -text $dirnames -variable list_libs
        grid .top.d.$dirnames -sticky nsew
        puts $ENTRYfilename5
    }
}
仅创建了一个单选按钮,并在其中添加了所有名称。
另外,我有点困惑如何为每个单选按钮指定不同的列和行值。

这段代码对我来说很好。因此,添加它以供其他人将来参考

proc check_lib_name {} {
    global ENTRYfilename5 ENTRYfilename f
    ##cd $ENTRYfilename/$ENTRYfilename5
    cd $ENTRYfilename
    set dirnames [glob -type d *]
    ##puts $dirnames
    set b 7
    foreach f $dirnames {
        set r 2
        puts $f
        radiobutton .top.d.$f -text $f -command $f.list -value $f.abc
        grid .top.d.$f -row $b -column $r -sticky nsew
    }
}

为什么在循环中使用
$dirnames
而不是
$f
?另外,窗口名中不允许包含所有字符,您可能需要先将文件名净化为有效的窗口名。谢谢Jerry,我对代码做了一些更改,但它仍然只有一个单选按钮。proc check_lib_name{}{global ENTRYfilename5 ENTRYfilename#cd$ENTRYfilename/$ENTRYfilename5 cd$ENTRYfilename set dirnames[glob-type d*]puts$dirnames foreach f$dirnames{set b7 set r1 radiobutton.top.d.$f-text$f-变量列表_libsgrid.top.d.$f-行$b-列$r-nsew incr b puts$ENTRYfilename5}
集合b
应该在循环之外。否则,每次使用有帮助的
单选按钮之前,它将等于7。。现在我有了所有的按钮place@danish,请添加带有工作代码的答案。如果你这样做,这个问题可能对未来的读者有一些价值。