如何在Tkinter中实现删除选中Notebook标签页的功能?
在Tkinter中删除选中的Notebook标签页
很简单,ttk.Notebook提供了现成的方法来实现这个需求,我们只需要结合select()和forget()(或destroy())方法就能完成删除选中标签页的功能。
核心实现思路
- 用
tasktabs.select()获取当前用户选中的标签页对象 - 用
tasktabs.forget()将标签页从Notebook中移除(标签页对象本身还保留,后续可重新添加);如果需要彻底销毁标签页,就调用标签页对象的destroy()方法
补充后的完整代码
from tkinter import * from tkinter import ttk import math import sys myApp = Tk() myApp.title("Program") myApp.geometry("1000x1200") tasktabs = ttk.Notebook(myApp) tasktabs.pack(fill=BOTH, expand=True) # 把Notebook放到窗口里才能显示 TabOne = ttk.Frame(tasktabs) tasktabs.add(TabOne, text="Tab One") TabTwo = ttk.Frame(tasktabs) tasktabs.add(TabTwo, text="Tab Two") # 添加触发删除的按钮,方便测试 delete_btn = ttk.Button(myApp, text="删除选中标签页", command=deletetab) delete_btn.pack(pady=10) def deletetab(): selected_tab = tasktabs.select() if selected_tab: # 先确认有选中的标签页 # 从Notebook中移除标签页(对象仍存在,可后续重新添加) tasktabs.forget(selected_tab) # 要是需要彻底销毁标签页,取消下面这行注释: # selected_tab.destroy() myApp.mainloop()
小提示
- 我额外加了
tasktabs.pack(fill=BOTH, expand=True)和删除按钮,这样你运行代码就能直接看到实际效果 - 如果用
forget(),之后你还可以通过tasktabs.add(selected_tab, text="新标题")把标签页重新加回去;要是用destroy(),这个标签页就彻底被销毁,无法再复用
内容的提问来源于stack exchange,提问作者Aleksandar Beat
相关产品推荐
相关产品推荐

