如何使用Tkinter创建没有X关闭按钮的窗口
Tkinter创建无X关闭按钮窗口的实现方法

方案1:跨平台全标题栏移除
该方法会直接去掉系统提供的整个标题栏,自然不存在X关闭按钮,同时支持全平台(Windows/MacOS/Linux)生效,适合需要自定义窗口UI的场景:
import tkinter as tk # 主窗口实例 root = tk.Tk() # 核心配置:设置为True即可移除默认标题栏 root.overrideredirect(True) root.geometry("400x250") # 可自行添加自定义关闭按钮等交互控件 tk.Button(root, text="手动关闭窗口", command=root.destroy, padx=10, pady=5).pack(pady=100) root.mainloop()
注意:该方案实现后窗口默认不支持拖动、最小化等操作,需要自己绑定鼠标事件实现对应逻辑。
方案2:仅隐藏X按钮,保留原有标题栏(Windows平台专属)
如果不需要修改整体标题栏样式,仅去掉X关闭按钮,可以调用Windows系统API实现,需要先安装依赖:pip install pywin32
实现代码:
import tkinter as tk import win32gui import win32con root = tk.Tk() root.geometry("400x250") root.title("仅隐藏X按钮的窗口") # 获取当前窗口句柄 hwnd = win32gui.GetParent(root.winfo_id()) # 读取当前窗口样式 current_style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE) # 移除系统菜单对应的样式位,即可去掉X关闭按钮 current_style &= ~win32con.WS_SYSMENU win32gui.SetWindowLong(hwnd, win32con.GWL_STYLE, current_style) root.mainloop()
附加:禁用X按钮点击功能(非隐藏)
如果不需要隐藏X按钮,只是要让点击X不生效,可以直接绑定窗口关闭协议:
import tkinter as tk root = tk.Tk() root.geometry("400x250") # 自定义关闭逻辑,这里直接pass就是点击X无反应 def on_close(): pass root.protocol("WM_DELETE_WINDOW", on_close) root.mainloop()
内容的提问来源于stack exchange,提问作者Rydex
相关产品推荐
相关产品推荐

