Reputation: 4559
I have a script that uses Tkinter to pop up a window with a message. How do I make sure it takes focus so the user doesn't miss it and explicitly has to dismiss the window. the code is :
root = Tk()
to_read = "Stuff"
w = Label(root, text=to_read)
w.pack()
root.mainloop()
Upvotes: 13
Views: 35274
Reputation: 21
What worked for me was:
root.wm_attributes("-topmost", 1)
root.focus_force()
I found this and some other way to do it in win32 here
Upvotes: 2
Reputation: 123568
You can use focus_force
method. See the following:
But note the the documentation:
w.focus_force()
Force the input focus to the widget. This is impolite. It's better to wait for the window manager to give you the focus. See also .grab_set_global() below.
Update: It should work on root
. For example, try running the following code. It will create a window and you can switch focus. After 5 seconds, it will try to grab the focus.
from Tkinter import *
root = Tk()
root.after(5000, lambda: root.focus_force())
root.mainloop()
Upvotes: 21