Python tkinter Notebook多选项卡如何使Tab的title右侧存在关闭按钮
Python tkinter.ttk 的 Notebook 多选项卡Tab标题的右侧是没有关闭按钮的,如何如同浏览器一样可点击关闭按钮关闭Tab?回答可以直接用 Button 代替,谢谢。
Python tkinter.ttk 的 Notebook 多选项卡Tab标题的右侧是没有关闭按钮的,如何如同浏览器一样可点击关闭按钮关闭Tab?回答可以直接用 Button 代替,谢谢。
使用 tkinter.ttk Notebook 控件时,可以通过自定义每个选项卡的标题部分来实现关闭按钮。
这可以通过创建自己的标签页控件类来实现,该类包含一个按钮用于关闭选项卡,并将该类的实例作为标签页的标题。
import tkinter as tk
import tkinter.ttk as ttk
class TabTitle(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.label = tk.Label(self, text=kwargs.get("text", ""), font=("TkDefaultFont", 8))
self.label.pack(side="left", fill="x", expand=True)
self.close_button = tk.Button(self, text="X", command=kwargs.get("close_callback"))
self.close_button.pack(side="right")
class NotebookWithCloseTab(ttk.Notebook):
def __init__(self, parent, *args, **kwargs):
ttk.Notebook.__init__(self, parent, *args, **kwargs)
def add(self, frame, text="", close_callback=None):
tab_title = TabTitle(self, text=text, close_callback=close_callback)
self.add(frame, text=text, labelwidget=tab_title)
if __name__ == "__main__":
root = tk.Tk()
notebook = NotebookWithCloseTab(root)
frame1 = tk.Frame(notebook)
notebook.add(frame1, text="Tab 1", close_callback=lambda: notebook.forget(frame1))
frame2 = tk.Frame(notebook)
notebook.add(frame2, text="Tab 2", close_callback=lambda: notebook.forget(frame2))
notebook.pack(fill="both", expand=True)
root.mainloop()