嘉定世外的JinJiayang 2023-02-01 11:54 采纳率: 42.9%
浏览 85

Python tkinter Notebook多选项卡如何使Tab的title右侧存在关闭按钮

Python tkinter Notebook多选项卡如何使Tab的title右侧存在关闭按钮

Python tkinter.ttk 的 Notebook 多选项卡Tab标题的右侧是没有关闭按钮的,如何如同浏览器一样可点击关闭按钮关闭Tab?回答可以直接用 Button 代替,谢谢。

  • 写回答

2条回答 默认 最新

  • m0_54204465 2023-02-01 12:03
    关注

    使用 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()
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 2月1日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表