Python 2.7 Tkinter中的键盘焦点

Python 2.7 Tkinter中的键盘焦点,python-2.7,tkinter,keyboard,ipython,spyder,Python 2.7,Tkinter,Keyboard,Ipython,Spyder,我想使用具有顶级和键盘焦点的tkMessageBox.askyesno。 我编写了以下代码 import Tkinter import tkMessageBox root=Tkinter.Tk() root.attributes('-topmost',True) root.after_idle(root.attributes,'-topmost',False) root.lift() if tkMessageBox.askyesno('Yes or No?','Yes or No?'):

我想使用具有顶级和键盘焦点的
tkMessageBox.askyesno
。 我编写了以下代码

import Tkinter
import tkMessageBox

root=Tkinter.Tk()
root.attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',False)
root.lift()

if tkMessageBox.askyesno('Yes or No?','Yes or No?'):
    pass
else:
    pass
root.withdraw()
我可以创建一个具有顶级焦点的askyesno消息框。 然而,我无法集中精力在键盘上选择“是”或“否”按钮

我通常在Spyder的IPython上执行代码。当我在命令行上执行上述代码时,即
!PythonC:/…/test.py
在IPython控制台上,我总是可以使对话框以键盘焦点显示。但是,当我在IPython控制台上执行上述代码时,我不能始终使对话框以键盘焦点显示。Spyder中编辑器的键盘焦点

为什么结果不同? 这似乎是Spyder的一个问题。是否有任何方法可以使对话框始终以键盘焦点显示在IPython控制台上以方便操作(在命令行上运行代码需要一点时间)?
当然,我可以用鼠标选择一个按钮,并通过Alt制表键使键盘聚焦在对话框上。但是,我想通过光标键选择一个按钮,并在出现对话框后按enter键,无需任何其他操作


谢谢你的帮助

您可以使用鼠标选择按钮,而不是键盘。要使用键盘,必须绑定要使用的键。默认按钮为“是”按钮。因此,如果您通过单击对话框的标题栏或按住Alt键将焦点设置在对话框上,然后按Return键,它将以Yes作为响应。要更改行为,请添加关键字对以设置默认按钮
tkMessageBox.askyesno('Yes or No?','Yes or No?',default='No')
当然,我可以用鼠标选择一个按钮,然后通过Alt选项卡将焦点放在对话框的键盘上。但是,我想通过光标键选择一个按钮,并在出现对话框后按enter键,无需任何其他操作。我将尝试绑定。当我在windows和linux上运行此代码时,键盘焦点没有问题。”“是”有焦点。(非常肯定,你不能用绑定解决这个问题,因为tkMessageBox不会暴露实际的按钮)当然,“是”按钮有时会集中在我的案例上。然而,在很多情况下,按钮并没有被聚焦,我用作IDE的Spyder中的编辑器被聚焦在键盘上。我不知道对话什么时候会聚焦。