0

使用以下 Tcl 脚本,入口小部件将不接受输入。它出现但没有响应。

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test}

如果我注释掉 tk_messageBox 行,那么条目小部件可以正常工作。是什么导致了这种行为,我该如何解决?

我在 Windows 上使用 Tcl/Tk 8.5.2。

澄清一下,我的问题是在消息框被关闭后输入框被破坏。输入框将不接受焦点/输入,并且不会显示插入符号。我已经使用我自己编译的 Tcl/Tk 以及来自Equi4的 tclkit 在 Windows XP 和 Vista 上对此进行了测试。在每种情况下,如果在初始化脚本中显示消息框,则该条目不起作用。

编辑:还有一件事。如果将代码输入交互式愿望控制台,则不会出现此“错误”。仅当代码在文件中并且从命令行以文件名作为参数调用wish时,它似乎才会失败。

4

5 回答 5

0

消息框是模态的,即它在关闭之前捕获输入焦点。如果您希望您的应用在打开时保持响应,您必须以不同的方式显示您的消息。

于 2010-01-16T06:57:50.653 回答
0

似乎是一个典型的焦点问题。我已经在我的系统中进行了测试,下一个脚本似乎工作正常:

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test} focus
focus -force .a

每当您遇到此类问题时,都认为焦点可能已经消失,您需要恢复它。检查焦点和抓取命令。

希望能帮助到你。

于 2010-01-20T20:59:31.920 回答
0

我在 windows xp 上使用 tclkit 8.5.8 尝试了 3 行 tcl/tk 示例,它按预期工作。请记住,tk 8.x 使用越来越多的 Windows 原生小部件,这些小部件与仅 tk 小部件之间的交互有时会很棘手。

于 2010-01-21T17:21:50.300 回答
0

显然这是 Tk 中的一个错误。

简单的解决方法是把

update idletasks

作为初始化脚本中的第一行代码。

于 2010-02-03T23:11:17.130 回答
0

我在使用输入框时也遇到了同样的问题,但是在将焦点模型更改为被动后得到了解决。

wm focusmodel .w passive
于 2021-06-17T17:41:02.090 回答