Tkinter中如何设置关闭主窗口前禁止操作后台窗口
Tkinter 实现关闭主窗口前禁止操作后台窗口的方案
你要找的是 Tkinter 的模态窗口实现能力,核心通过grab_set()方法实现,具体规则和用法如下:
- 调用需要置顶的窗口对象的
grab_set()方法后,所有鼠标、键盘交互事件只会被该窗口捕获,其余后台窗口会进入无法响应操作的状态 - 置顶窗口关闭后会自动释放事件捕获权限,其余窗口自动恢复可操作状态
- 可选搭配
grab_release()方法手动释放捕获,可提升不同系统环境下的兼容性
可直接运行的代码示例
import tkinter as tk # 后台窗口 root = tk.Tk() root.title("后台窗口") def open_top_window(): # 需优先操作的主窗口 top_win = tk.Toplevel(root) top_win.title("优先操作主窗口") # 核心配置:设置模态捕获,禁止操作后台窗口 top_win.grab_set() # 绑定窗口关闭逻辑,可选手动释放捕获 def close_handle(): top_win.grab_release() top_win.destroy() top_win.protocol("WM_DELETE_WINDOW", close_handle) tk.Label(top_win, text="关闭当前窗口前无法操作后台窗口").pack(padx=30, pady=30) tk.Button(root, text="打开主窗口", command=open_top_window).pack(padx=60, pady=60) root.mainloop()
补充说明
如果是要让程序启动后的默认主窗口成为唯一可操作窗口,直接在主窗口初始化完成后调用root.grab_set()即可。
内容的提问来源于stack exchange,提问作者Lara
相关产品推荐
相关产品推荐

