首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建带有foreach循环的按钮,并在tcl中通过单击按钮将参数传递给过程。

创建带有foreach循环的按钮,并在tcl中通过单击按钮将参数传递给过程。
EN

Stack Overflow用户
提问于 2022-06-24 12:03:26
回答 1查看 55关注 0票数 0

我正在尝试在tcl中创建一些按钮。根据单击的按钮,我想将不同的参数传递给一个过程。

代码语言:javascript
运行
复制
set cord_y 25
foreach {x but_name arg1 arg2} {1 button-1 val1 val2 2 button-2 val3 val4 3 button-3 val4 val5 4 button-4 val6 val7 5 button-5 val8 val9} {
    button $a.$x -text $but_name -command {print $arg1 $arg2}
    place $a.$x -x 20 -y $cord_y -width 80 -height 25
    
    set cord_y [expr $cord_y+35]
    }

proc print {i j} {
    puts "$i--$j"
    }

无论单击哪些按钮,输出始终是val8--val9。如何从每个按钮调用传递不同的参数。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 13:05:21

问题就在眼前

代码语言:javascript
运行
复制
button $a.$x -text $but_name -command {print $arg1 $arg2}

因为print命令包含在{}中,所以只有在运行命令时才会替换arg1arg2的值。您想要的是在定义命令时替换它们。为了达到这个目的,你应该去做

代码语言:javascript
运行
复制
button $a.$x -text $but_name -command [list print $arg1 $arg2]

(实际上,在这种情况下,您可以只使用-command "print $arg1 $arg2",但如果arg1或arg2包含空格或其他特殊字符,则会失败。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72743801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档