在tcl / tk对话框中,我需要从用户那里获得文本输入。
proc add_entry { command } {
global TestValue
entry .dialog_TC.enText -textvariable TestValue
grid .dialog_TC.enText -row 1 -column 1 -columnspan 2 -pady 1 -padx 1
}
问题:
每当用户将单个字母写入输入字段时,对话框立即关闭。
答案 0 :(得分:0)
好的,我没有想到我的短信,我也在那个剧本中。每当其中一个字母写入输入字段时,窗口就会关闭。我必须把键组合在一起......
bind . <Control-Key-a> \
{ tk_messageBox -message "You pressed Control+A" } ;#Control+a
答案 1 :(得分:0)
我猜你在TestValue
变量的其他地方(可能是vwait
或tkwait variable
)检测到变量的变化并{{{}当发生这种情况时,可能通过杀死整个对话框来移动小部件。您不包含代码,但它可能类似于:
destroy
这是猜测,也可能大大简化了。但如果是这种情况,更改变量值的第一个事件(即,条目中大多数键按下)将导致proc make-me-a-dialog {} {
toplevel .dialog_TC
# ...
add_entry { something ... }
# ...
vwait TestValue
destroy .dialog_TC
return $TestValue
}
停止等待并触发级联破坏。
您需要停止等待条目的内容。您不希望每次更改内容时触发,而是仅当用户说“我已完成并想要进行更改时vwait
”或“我已完成并且不做想要进行更改,OK
“。或者,根据互动方式,“我做完了;我的变化已经存在。关闭此窗口“。凭借丰富的经验,您实际需要监听的事件是关闭窗口,按返回并按 Escape
让我们来解决。
Cancel