为什么对Python应用程序的第二次调用没有';我没有键盘焦点
如果我调用这个类两次,键盘焦点第一次转到窗口时。第二次没有。逃生键用于关闭车窗,它在第一时间起作用。第二次必须用鼠标点击窗口才能使用escape键。焦点没有被传回是不是有什么问题?我已经多次遇到这个问题,但在这里,我尽可能简单地抓住了它。代码如下:为什么对Python应用程序的第二次调用没有';我没有键盘焦点,python,tkinter,Python,Tkinter,如果我调用这个类两次,键盘焦点第一次转到窗口时。第二次没有。逃生键用于关闭车窗,它在第一时间起作用。第二次必须用鼠标点击窗口才能使用escape键。焦点没有被传回是不是有什么问题?我已经多次遇到这个问题,但在这里,我尽可能简单地抓住了它。代码如下: from Tkinter import * class Dialog(): # imagine this having buttons and stuff def __init__(self): root = Tk()
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
从Tkinter导入*
class Dialog():#想象一下这里有按钮之类的东西
定义初始化(自):
root=Tk()
root.bind_all(“”,lambda事件:root.destroy())
root.mainloop()
#这模拟运行python终端应用程序,该应用程序在某个点调用对话框
Dialog()#这个接受键操作
Dialog()#首先需要在窗口中单击鼠标
我刚刚运行了代码,在Windows7中,它也没有聚焦
你用什么操作系统运行它
此外,您还可以通过插入这一行将焦点强制到根窗口
root.focus\u force()在使用X11作为窗口服务器并使用X终端或常规终端的Mac上,焦点始终转到对话框窗口,因此escape键两次都有效。在从cmd.exe终端运行的windows XP上,焦点仅在第一次转到对话框。第二次必须先单击窗口。但是,使用root.focus\u force()可以使它在任何地方都能工作。非常感谢 但是为什么退出应用程序只是为了重新启动它呢?这是对这个问题的过度简化。所以不要过度分析:)在我的真实案例中,我在终端窗口中运行一个文本应用程序,当我按下escape键时,我想打开一个包含选择的Tkinter窗口。这是可行的,但弹出窗口没有接收到键盘焦点,因此我无法使用键盘键在新窗口中进行选择。为了预测下一个问题,终端窗口在速度和稳定性方面比Tkinter文本窗口要好得多。真正的问题是,我如何确保新窗口将获得键盘焦点?