英文:
How to invoke Tcl procedure at script start
问题
我有一个tcl脚本,其中有toplevel“.”和一个按钮。
是否可以将这个toplevel“.”放在一个过程中,当我启动我的脚本时,该过程将被调用?
例如:
菜单
proc 菜单 { } {
wm title . "菜单"
ttk::button .b -width 30 -text 关闭 -command {exit}
grid configure .b -row 0 -column 0 -sticky nw -padx 10 -pady 10
}
我得到了“invalid command name “Menu” (error)”错误。
英文:
I have a tcl script, that has the toplevel "." with a button.
It is possible to put this toplevel . inside a procedure, and when i start my script, the procedure will be invoked?
Exemp:
Menu
proc Menu { } {
wm title . "Menu"
ttk::button .b -width 30 -text close -command {exit}
grid configure .b -row 0 -column 0 -sticky nw -padx 10 -pady 10
}
I'm getting "invalid command name "Menu" (error)".
答案1
得分: 1
Tcl按照您指定的顺序运行命令。将对 proc Menu
的调用放在对 Menu
的调用之后以执行它。
而且,如果它是一次性命令,请使用应用的 lambda,这样您就不会污染您的命名空间,也不必使用 rename
进行操作:
apply {{} {
# 所有您可能需要的本地变量都在这里
wm title . "菜单"
set btn [ttk::button .b -width 30 -text close -command {exit}]
grid configure $btn -row 0 -column 0 -sticky nw -padx 10 -pady 10
}}
英文:
Tcl literally runs commands in the order you specify. Put the call to Menu
after the call to proc Menu
to make it.
And if it is a one-shot command, use an applied lambda so you don't pollute your namespace or have to use hacks with rename
:
apply {{} {
# All the local variables you could ever want are in here
wm title . "Menu"
set btn [ttk::button .b -width 30 -text close -command {exit}]
grid configure $btn -row 0 -column 0 -sticky nw -padx 10 -pady 10
}}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论