【发布时间】:2023-03-29 15:30:01
【问题描述】:
我有一个脚本,它使用 Tkinter 弹出一个带有消息的窗口。我如何确保它获得焦点,以便用户不会错过它并且明确地必须关闭窗口。代码是:
root = Tk()
to_read = "Stuff"
w = Label(root, text=to_read)
w.pack()
root.mainloop()
【问题讨论】:
标签: python user-interface tkinter
我有一个脚本,它使用 Tkinter 弹出一个带有消息的窗口。我如何确保它获得焦点,以便用户不会错过它并且明确地必须关闭窗口。代码是:
root = Tk()
to_read = "Stuff"
w = Label(root, text=to_read)
w.pack()
root.mainloop()
【问题讨论】:
标签: python user-interface tkinter
您可以使用focus_force 方法。请参阅以下内容:
但请注意文档:
w.focus_force()
强制输入焦点到小部件。这是不礼貌的。最好等待窗口管理器给你焦点。另请参阅下面的 .grab_set_global()。
更新:它应该在 root 上工作。例如,尝试运行以下代码。它将创建一个窗口,您可以切换焦点。 5秒后,它会尝试抓住焦点。
from Tkinter import *
root = Tk()
root.after(5000, lambda: root.focus_force())
root.mainloop()
【讨论】:
after 不是必需的:它只是在强制焦点之前引入延迟,以便我可以启动应用程序并有足够的时间将焦点转移到另一个应用程序以进行演示。很高兴它现在对你有用。 :)
focus_force 获取Text 小部件?因为我用过focus_force,但是有一个问题:IDLE和tinter.Text小部件都有自己的光标,但是当我尝试写的时候,它写在交互式IDLE shell上而不是tinter.Text小部件上,即使那里还有一个光标。
【讨论】: