2010-10-01 71 views
9

我有一个脚本,使用Tkinter弹出一个消息窗口。我如何确保它需要关注,以便用户不会错过它,并明确地必须关闭窗口。代码是:使Tkinter小部件成为焦点

root = Tk() 
to_read = "Stuff" 
w = Label(root, text=to_read) 
w.pack() 
root.mainloop() 

回答

14

您可以使用focus_force方法。请参阅以下内容:

但需要注意的文档:

w.focus_force()

强制输入焦点的部件。这是不礼貌的。最好等待窗口经理给你关注。另请参阅下面的.grab_set_global()。

更新:它应该在root上工作。例如,尝试运行以下代码。它会创建一个窗口,您可以切换焦点。 5秒后,它会尝试抓住焦点。

from Tkinter import * 

root = Tk() 
root.after(5000, lambda: root.focus_force()) 
root.mainloop() 
+0

的命令就可以了,但如果它在我的代码去?看来我的格式将是root.focus_force,但它会给出一个Attribute错误。 – Ali 2010-10-01 20:11:39

+1

@Ali:我更新了问题以回答您的评论。 – ars 2010-10-01 20:19:15

+0

它现在似乎在工作。但是我忽略了.after函数。谢谢。 – Ali 2010-10-01 20:37:42

1

什么工作对我来说是:

root.wm_attributes("-topmost", 1) 
root.focus_force() 

我发现这和一些其他的方式来做到这一点在Win32 here