我想在 tkinter 中创建一个顶层窗口,并且我希望外部区域不可点击。所以这样一来,用户就不能在顶层窗口被销毁后点击退出。 (并且还防止能够从根 Tk() 创建相同的窗口)
最佳答案
Tkinter 支持一种称为“抓取”的东西。当您捕获一个窗口时,所有事件都通过该小部件汇集。即使您在窗口外单击,单击也会注册到窗口中。
有两种类型的抓取:局部抓取和全局抓取。本地意味着抓取仅适用于您的应用程序——例如,您仍然可以在桌面上单击。全局抓取适用于整个计算机。这些可能非常危险,因为如果您不提供释放抓取的方法,您可能会完全锁定您的 UI。
要设置本地抓取,您可以调用 grab_set在任何小部件上,所有事件都将转到该小部件。要设置全局图,请调用 grab_set_global .
本地抓取是 tkinter 实现模态对话框的方式——当对话框打开时,它有一个本地抓取,因此您必须在单击主窗口中的按钮之前关闭对话框。
Danger Will Robinson!如果您正在使用全局抓取,请确保有一个绝对安全的方法来释放抓取。例如,在开发过程中,您可以使用 after
在 15 秒后释放抓取。或者,绑定(bind)到转义键。始终,始终首先使用本地抓取进行测试。但是,根据经验,除非绝对必要,否则您应该避免使用全局抓取。
关于python - 如何使顶层以外的区域不可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30405944/