使用以下Tcl脚本,条目小部件将不接受输入。它似乎但没有反应。
pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test}
如果我注释掉tk_messageBox行,那么条目小部件工作正常。导致此行为的原因以及如何解决?
我在Windows上使用Tcl / Tk 8.5.2。
为了澄清,我的问题是在消息框被解除后输入框被破坏了。输入框不接受焦点/输入,也不会显示插入符号。我已经在Windows XP和Vista上测试了这个,使用我自己编译的Tcl / Tk和来自Equi4的tclkit。在每种情况下,如果初始化脚本中显示消息框,则该条目不起作用。
编辑:还有一件事。如果将代码输入到交互式愿望控制台中,则不会出现此“错误”。当代码在文件中并且从命令行以文件名作为参数调用wish时,它似乎只会失败。
答案 0 :(得分:0)
消息框是模态的,即它捕获输入焦点直到它关闭。如果您希望自己的应用在打开时保持响应,则必须以不同的方式显示您的消息。
答案 1 :(得分:0)
似乎是一个典型的焦点问题。我已经在我的系统中进行了测试,下一个脚本似乎运行良好:
pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test} focus
focus -force .a
每当你遇到这类问题时,都认为焦点可能会消失,你需要恢复它。检查焦点和抓取命令。
希望它有所帮助。
答案 2 :(得分:0)
我在windows xp上尝试了tclkit 8.5.8的3行tcl / tk示例,它可以像人们期望的那样工作。请记住,tk 8.x使用越来越多的Windows本机小部件,这些小部件之间的交互有时会非常棘手。
答案 3 :(得分:0)
显然这是Tk中的一个错误。
简单的解决方法是放
update idletasks
作为初始化脚本中的第一行代码。
答案 4 :(得分:0)
我在使用输入框时也遇到了同样的问题,但在将 focusmodel 更改为被动后解决了。
wm focusmodel .w passive