我现在创建了相同的用户界面,最初使用了tcl的gui builder。但是,它在我如何构建界面和小部件之间的间距方面受到限制。现在我已经创建了我的界面,我正在寻找为特定小部件创建一个过程块。例如,我想退出按钮退出程序。
为此,我创建了以下过程:
proc btnQuit args {
exit
}
这不会导致语法或运行时错误,但是按下按钮时,程序不会退出。这是最简单的情况,因为还有其他更复杂的情况,因此-command标志不适用于所有情况。
思想?
以下是我的整个代码。这只是打开了用户界面。
#Includes the necessary packages
package require BWidget
package require Tk
namespace eval Main_Menu {}
#DO NOT MODIFY!! Graphical User Interface Code DO NOT MODIFY!!
#Limit the size of window
wm maxsize . 475 180 ;#x-500, y-210
wm minsize . 475 180 ;#x-500, y-210
#[Device name] Test Frame w/ associated check boxes
labelframe .lblfrmSelection -text "Testable Devices" -padx 1 -relief groove -height 175 -width 200
button .btnDualUTA -text "Dual UTA" -padx 5 -anchor "center" -justify "center" -padx 3
button .btnTProbe -text "T-Probe" -padx 5 -anchor "center" -justify "center" -padx 7
button .btnOctal -text "Octal" -padx 5 -anchor "center" -justify "center" -padx 14
button .btnUniversal -text "Universal" -padx 5 -anchor "center" -justify "center"
button .btnQuit -text "Exit" -padx 5 -anchor "center" -justify "center" -padx 18
#Setup second frame with image label
labelframe .lblfrmHWSetup -text "Hardware Setup" -padx 1 -relief groove -height 200 -width 175
image create photo glcomm.gif
label .lblSetup -text "Image goes here"
#*************** Render User Environment ******************
#Create Device Test Interface with check boxes in frame.
place .lblfrmSelection -anchor nw -x 5 -y 1 -width 165 -height 175
place .btnDualUTA -in .lblfrmSelection -x 40 -y 15 -anchor "w"
place .btnTProbe -in .lblfrmSelection -x 40 -y 46 -anchor "w"
place .btnOctal -in .lblfrmSelection -x 40 -y 76 -anchor "w"
place .btnUniversal -in .lblfrmSelection -x 40 -y 106 -anchor "w"
place .btnQuit -in .lblfrmSelection -x 40 -y 136 -anchor "w"
#Create label frame "Hardware Setup"
place .lblfrmHWSetup -anchor nw -x 170 -y 1 -height 175 -width 300
place .lblSetup -in .lblfrmHWSetup -x 171 -y 2
# MODIFY BELOW THIS LINE!! MODIFY BELOW THIS LINE!!
proc btnQuit args {
exit
}
答案 0 :(得分:0)
您尚未显示按钮的创建方式,但-command
选项 您需要的
$ tclsh <<'END'
package req Tk
proc btnQuit args {exit}
button .b -text Quit -command btnQuit
pack .b
END
如果您的按钮已创建,则可以使用-command选项
对其进行配置button .b -text Quit
.b configure -command btnQuit
请注意,这会在全局命名空间中查找“btnQuit”proc。如果您正在使用名称空间,则必须完全限定命令名称。当您单击按钮(无效的命令名称“btnQuit”)
时,这将引发错误namespace eval MySpace {
proc btnQuit args {exit}
}
button .b -text Quit -command btnQuit
在这种情况下,您需要
button .b -text Quit -command MySpace::btnQuit
如果你需要将参数传递给btnQuit proc,你会做类似
的事情button .b -text Quit -command [list btnQuit $local_var1 $local_var2]
或
button .b -text Quit -command {btnQuit $global_var1 $global_var2}
不同的引用机制导致变量在不同时间被替换: