在tcl / tk对话框中将文本写入输入字段

时间:2016-09-21 07:29:18

标签: user-interface tcl tk

在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       
}

问题:
每当用户将单个字母写入输入字段时,对话框立即关闭。

2 个答案:

答案 0 :(得分:0)

好的,我没有想到我的短信,我也在那个剧本中。每当其中一个字母写入输入字段时,窗口就会关闭。我必须把键组合在一起......

bind . <Control-Key-a> \
 { tk_messageBox -message "You pressed Control+A" } ;#Control+a

答案 1 :(得分:0)

我猜你在TestValue变量的其他地方(可能是vwaittkwait variable)检测到变量的变化并{{{}当发生这种情况时,可能通过杀死整个对话框来移动小部件。您不包含代码,但它可能类似于:

destroy

这是猜测,也可能大大简化了。但如果是这种情况,更改变量值的第一个事件(即,条目中大多数键按下)将导致proc make-me-a-dialog {} { toplevel .dialog_TC # ... add_entry { something ... } # ... vwait TestValue destroy .dialog_TC return $TestValue } 停止等待并触发级联破坏。

您需要停止等待条目的内容。您不希望每次更改内容时触发,而是仅当用户说“我已完成并想要进行更改时vwait”或“我已完成并且不做想要进行更改,OK“。或者,根据互动方式,“我做完了;我的变化已经存在。关闭此窗口“。凭借丰富的经验,您实际需要监听的事件是关闭窗口,按返回并按 Escape

让我们来解决。

Cancel