Tcl / Tk初始化脚本期间tk_messageBox出现问题

时间:2010-01-16 05:34:19

标签: tcl tk

使用以下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时,它似乎只会失败。

5 个答案:

答案 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