为什么第二次调用Python应用程序没有键盘焦点

时间:2011-01-27 06:18:23

标签: python tkinter

如果我两次调用此类,则第一次键盘焦点转到窗口。第二次没有。转义键用于关闭窗口,它第一次工作。第二次必须使用鼠标单击窗口才能使用转义键。焦点没有被传回,有什么事吗?我已经多次遇到过这个问题,但在这里我尽可能简单地抓住了它。这是代码:

from Tkinter import *

class Dialog(): # imagine this having buttons and stuff
    def __init__(self):
        root = Tk()
        root.bind_all('<Escape>', lambda event :root.destroy())
        root.mainloop()

# this simulates running a python terminal app which invokes a dialog at some point
Dialog() # this one accepts the key action
Dialog() # this one needs a mouse click in the window first

2 个答案:

答案 0 :(得分:0)

我刚刚运行了代码,而在Windows 7中,它不需要时间关注。

你在运行什么操作系统?

此外,你可以通过抛出这一行来强制对焦于根窗口。

<强> root.focus_force()

答案 1 :(得分:0)

在使用X11作为窗口服务器并使用X终端或常规终端的Mac上,焦点始终转到对话窗口,因此转义键可以同时工作。在从cmd.exe终端运行的Windows XP上,焦点仅在第一次进入对话框。第二次必须先单击窗口。但是,使用root.focus_force()可以在任何地方使用它。非常感谢!