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

Tcl/tk初始化脚本期间tk_messageBox出现问题,tcl,tk,Tcl,Tk,使用以下Tcl脚本,entry小部件将不接受输入。它似乎没有反应 pack [entry .a] -padx 15 -pady 15 tk_messageBox -message {test} 如果我注释掉tk_messageBox行,则条目小部件工作正常。是什么导致了这种行为?我该如何修复它 我正在Windows上使用Tcl/Tk 8.5.2 澄清一下,我的问题是,在消息框被取消后,输入框被破坏。输入框不接受焦点/输入,也不显示插入符号。我已经在WindowsXP和Vista上测试过了,使用

使用以下Tcl脚本,entry小部件将不接受输入。它似乎没有反应

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test}
如果我注释掉tk_messageBox行,则条目小部件工作正常。是什么导致了这种行为?我该如何修复它

我正在Windows上使用Tcl/Tk 8.5.2

澄清一下,我的问题是,在消息框被取消后,输入框被破坏。输入框不接受焦点/输入,也不显示插入符号。我已经在WindowsXP和Vista上测试过了,使用的是我自己编译的Tcl/Tk,以及来自的tclkit。在每种情况下,如果在初始化脚本中显示消息框,则条目都不起作用


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

消息框是模态的,即它捕获输入焦点,直到关闭为止。如果你想让你的应用程序在打开时保持响应,你必须以不同的方式显示你的信息。

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

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test} focus
focus -force .a
每当你遇到这种类型的问题时,你都会认为焦点可能消失了,你需要恢复它。检查focus和grab命令


希望能有所帮助。

我在windows xp上试用了tclkit 8.5.8的三行tcl/tk示例,它的工作原理与人们所期望的一样。请记住,tk 8.x使用了越来越多的Windows本机小部件,这些小部件与仅tk的小部件之间的交互有时会很棘手。

显然,这是tk中的一个bug

简单的解决办法是

update idletasks

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

否,即使在消息框关闭后,条目小部件也会损坏。对我来说,使用WinXPOh上的8.5.1很好,在这种情况下,我也不知道发生了什么。在使用相同版本的Tcl/Tk的Linux下,它是模态的,输入框一旦关闭就可以正常工作。你确定这不仅仅是焦点相关的问题吗?在关闭消息框后单击条目是否可以使其工作?我无法在关闭消息框后使其工作。单击不起作用。制表符不起作用。右键单击没有响应。当鼠标光标悬停在条目上时,光标将转到插入符号,但无论如何,我都无法在条目框中显示插入符号。我已经能够在几台计算机上重现这个错误,所以我很惊讶没有其他人能够重现。只是澄清一下,在消息框被关闭后,条目小部件被破坏了。