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,请添加带有工作代码的答案。如果你这样做,这个问题可能对未来的读者有一些价值。