帮助我解决我的一个问题,我抓住了我的想法继续前进。 我在foreach循环中创建了一个radiobutton。也希望每个这些按钮都有一个不同的命令选项,因为我不确定将创建多少个按钮(它总是动态的)我把它放在foreach循环中。
此外,我将proc作为变量附加,因此每当单击这些单选按钮时,proc的函数体将执行,但此代码无法正常运行并在选择单选按钮时抛出错误。 我认为变量$ elem和$ w没有传递给proc
proc check_lib_name {} {
global ENTRYfilename5 ENTRYfilename f mylist elem w
cd $ENTRYfilename
set dirnames [glob -type d *]
set b 7
set mylist {}
foreach f $dirnames {
set r 2
lappend mylist $f
}
set w 0
foreach elem $mylist {
radiobutton .top.d.$elem -text $elem -command $elem.$w -value $elem.abc
grid .top.d.$elem -row $b -column $r -sticky nsew
incr b
incr w
}
#### Proc attached with radiobuttons
proc $elem.$w {} {
global ENTRYfilename5 ENTRYfilename elem w
cd $elem
set rrpath [glob -type d *]
puts $rrpath
set del "/"
set klpath [concat [string trim $ENTRYfilename][string trim $del][string trim $elem][string trim $del][string trim $rrpath]]
puts $klpath
cd $klpath
exec [myRun.sh]
}
}
答案 0 :(得分:2)
在foreach循环运行之后,$elem
和$w
的值将是它们的最后一个值,这也意味着您只创建了1个proc,这是最后一个单选按钮。 / p>
我认为为每个配给按钮制作1个proc是个好主意。使用带有参数的1个通用过程。
...
radiobutton .top.d.$elem -text $elem -command [list radiofunction $elem $w] -value $elem.abc
...
然后
proc radiofunction {elem w} {...}
radiofunction
只是一个示例名称。