在取消选择窗口之前,Python tk输入框无效

时间:2018-06-09 14:56:06

标签: python tk

我有一个基于Tk的小应用程序,它使用窗口的标准布局,在 init 中定义。对于其中一个子菜单项,我需要暂时创建一个小表单,我在成功提交后删除它。我在下面的mcve中使用start_make_canvas中的代码动态执行此操作:

names <- unique(c(data$head,data$tail))
data$head <- match(data$head,names)
data$tail <- match(data$tail,names)

从菜单中选择“Make Canvas”后出现问题 - 表单创建工作正常,但新创建的Entry元素在首次创建时不活动:我看不到插入光标,键入的文本也没有进入。当我选择一个不同的窗口并重新选择我的应用程序窗口时,一切都很好。在为mainloop创建表单后,是否需要调用一个方法来识别是否有新的位需要处理?

注意:在创建mcve时,我发现start_tagging中的消息框是重新创建问题所必需的。没有它,一切都从一开始就有效。有了它,最初创建的复选框工作正常,但新的输入框没有(直到取消选择/重新选择窗口)。

1 个答案:

答案 0 :(得分:0)

出于某种原因,Entry控件看起来好像还没有完全初始化:我甚至无法点击控件并输入内容,它没有反应。如果我将Alt-Tab退出应用程序并重新登录,则会恢复正常。使用focus_force()帮助作为解决方法(在这种情况下,这是合理的,因为它是作为对用户肯定行动的响应而完成的)。

这也可能是Tk中的错误,或者在.place()“忘记”提及的ttk.Entry后需要一些额外的步骤。 (对于<rule name="Force HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> <add input="{REQUEST_URI}" negate="true" pattern="^(www.)?bar.com$$" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> ,它是一样的,所以不是过时的代码。)你可以问@tcl-core@lists.sourceforge.net。