精华内容
下载资源
问答
  • 一、参数说明参数作用width选项卡宽度,单位像素height选项卡高度cursor鼠标停留的样式padding外部空间填充,是个最多4个元素的列表style设置menubotton的样式NoteBook方法列表:.add(child, **kw)该child 参数是一...

    一、参数说明

    参数作用

    width

    选项卡宽度,单位像素

    height

    选项卡高度

    cursor

    鼠标停留的样式

    padding

    外部空间填充,是个最多4个元素的列表

    style

    设置menubotton的样式

    NoteBook方法列表:

    .add(child, **kw)

    该child 参数是一个小部件,通常Frame,它包装一个子窗格中的内容。如果child不是Notebook窗口小部件的子窗格之一,child则添加为下一个可用选项卡,关键字参数kw定义新窗格的选项卡选项。这些选项在表51“ ttk.Notebook 小部件的选项卡选项”中定义。

    如果child是当前隐藏的窗格,则该选项卡将重新显示在其以前的位置。

    .enable_traversal()

    一旦调用此方法,一些额外的键绑定将起作用:

    Control-Tab将在当前选择的选项卡后选择选项卡。如果当前选择了最后一个选项卡,则选择将旋转回第一个选项卡。

    Shift-Control-Tab执行相反操作:它移动到上一个选项卡,如果选择了第一个选项卡,则环绕到最后一个选项卡。

    您可以配置直接选择选项卡的特定热键。要执行此操作,请使用text和underline选项卡选项为每个选项卡中的一个字符加下划线。然后,用户可以通过键入Alt-跳转到选项卡,x其中 x是该选项卡上带下划线的字符。

    如果Notebook在同一个应用程序中有多个小部件,则除非创建每个子窗格小部件并将其Notebook窗口小部件作为父窗口小部件,否则这些功能将无法正常工作。

    .forget(child)

    此方法child从窗口小部件的选项卡集中永久删除指定的内容。

    .hide(tabId)

    标识的选项卡tabId暂时从中显示的可见选项卡集中删除Notebook。您可以通过.add() 再次调用该方法来恢复它。

    .index(tabId)

    对于给定的tabId,此方法返回相应选项卡的数字索引。有一个例外:如果参数是字符串"end",则该方法将返回选项卡的总数。

    .insert(where, child,**kw)

    此方法使用任何关键字参数将窗口小部件插入到child指定的位置 where,以描述新选项卡和窗格。有关关键字选项,请参阅表51“ ttk.Notebook 小部件的选项卡选项”。

    该where 参数可以是任何的:

    “end” 在所有现有选项卡之后放置新选项卡。

    现有的子窗口小部件; 在这种情况下,new child就在现有小部件之前插入。

    .select([tabId])

    如果在没有参数的情况下调用此方法,它将返回当前显示其选项卡的窗口小部件的窗口名称。

    要显示特定窗格Notebook,请使用a tabId作为参数调用此方法。

    .tab(tabId, option=None, **kw)

    使用此方法可以为所描述的子窗格设置选项卡选项tabId,或者找出为该子窗格设置的选项。

    如果您调用没有关键字参数的方法,它将返回当前对指定的窗格有效的选项卡选项的字典tagId。

    要查找特定选项卡选项的当前值 X,请使用参数“option=X” 调用此方法,该方法将返回该选项卡选项的值。

    要为描述的子项设置一个或多个选项卡选项tagId,请使用关键字参数调用此方法。例如,如果self.nb 是 Notebook,则此调用将更改第一个选项卡上显示的文本:

    self.nb.tab(0, text=‘Crunchy frog’)

    .tabs()

    此方法返回的列表窗口名称中的Notebook的子窗格中,从第一个到最后的次序。

    二、代码示例

    import tkinter as tk

    from tkinter import ttk

    window = tk.Tk()

    # 设置窗口大小

    winWidth = 600

    winHeight = 400

    # 获取屏幕分辨率

    screenWidth = window.winfo_screenwidth()

    screenHeight = window.winfo_screenheight()

    x = int((screenWidth - winWidth) / 2)

    y = int((screenHeight - winHeight) / 2)

    # 设置主窗口标题

    window.title("TreeView参数说明")

    # 设置窗口初始位置在屏幕居中

    window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))

    # 设置窗口图标

    window.iconbitmap("./image/icon.ico")

    # 设置窗口宽高固定

    window.resizable(0, 0)

    # 定义列的名称

    tab = ttk.Notebook(window)

    frame1 = tk.Frame(tab, bg = "red")

    tab1 = tab.add(frame1, text = "1")

    frame2 = tk.Frame(tab, bg = "yellow")

    tab2 = tab.add(frame2, text = "2")

    frame3 = tk.Frame(tab, bg = "blue")

    tab3 = tab.add(frame3, text = "3")

    tab.pack(expand = True, fill = tk.BOTH)

    # 设置选中tab2

    tab.select(frame2)

    window.mainloop()

    三、效果图

    展开全文
  • 顺便问一下,tkinter有没有想浏览器里的选项卡一样有 ‘x’ 号 代码如下: class a: def destroy(self, event): self.note.forget(self.tab) def add_note(self, text): self.tab = Frame(self.note...
  • Python之tkinter 多选项卡 Notebook

    千次阅读 2020-03-25 11:40:05
      Notebook 是一个Widget 容器控件,这个控件的特点就是有许多选项卡,当选择不同选项卡时可以看到不同的子控件内容,也可以当做子窗口内容,Notebook 是属于tkinter.ttk模块的控件 构造方法如下: Notebook(父...

    Notebook 基本概念

      Notebook 是一个Widget 容器控件,这个控件的特点就是有许多选项卡,当选择不同选项卡时可以看到不同的子控件内容,也可以当做子窗口内容,Notebook 是属于tkinter.ttk模块的控件

    构造方法如下:

    Notebook(父对象, options)
    

    参数:

    • 第一个参数:父对象,表示这个选项卡将建立在哪一个窗口内
    • 第二个参数:options,参数如下
    参数 含义
    height 如果设置数值则使用设置高度
    默认是使用最大可能高度
    padding 设置Notebook外围的额外空间,可以设置4个数值代表left、top、tight、bottom四周的空间
    width 如果设置数值则使用设置宽度
    默认是使用最大可能宽度

    整个建立Notebook框架的步骤:

    • Notebook()建立Notebook对象,假设对象名称是notebook
    • 使用notebook对象调用add()方法
      • add(子对象, text='xxx')
      • xxx是要添加的选项卡名称
    • 上述代码可以将子对象插入notebook,同时产生’xxx’选项卡名称

    如果用正规语法表示add()方法,它的语法格式如下

    add(子对象, options)
    

    options参数如下:

    参数 含义
    compound 可以设置当选项卡内同时含图像和文字时,彼此之间的位置关系
    image 选项卡以图像方式呈现
    padding 设置Notebook和面板Pane的额外空间
    state 可能值是normal、disabled、hidden
    如果是disabled表示无法被选取使用
    如果是hidden表示被隐藏
    sticky 指出子窗口面板的配置方式,n/s/e/w分别表示North、South、East、West
    text 选项卡中的字符串内容
    underline 指出第几个字母含下划线
    从0开始计算的索引

    Notebook 基本应用

    例子

    import tkinter
    import tkinter.ttk
    root = tkinter.Tk()
    root.geometry('300x180')
    
    notebook = tkinter.ttk.Notebook(root)
    
    frameOne = tkinter.Frame()
    frameTwo = tkinter.Frame()
    
    notebook.add(frameOne, text='选项卡1')
    notebook.add(frameTwo, text='选项卡2')
    notebook.pack(padx=10, pady=5, fill=tkinter.BOTH, expand=True)
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    绑定选项卡与子控件内容

    例子

    import tkinter
    import tkinter.ttk
    root = tkinter.Tk()
    root.geometry('150x120')
    
    def show():
        labelOther.config(text='Tkinter')
        labelOther.config(bg='lightgreen')
    
    notebook = tkinter.ttk.Notebook(root)
    
    frameOne = tkinter.Frame()
    frameTwo = tkinter.Frame()
    
    # 添加内容
    label = tkinter.Label(frameOne, text='Python', bg='lightblue', fg='red')
    label.pack(padx=10, pady=5)
    
    button = tkinter.Button(frameTwo, text='请点击', command=show)
    button.pack(padx=10, pady=5)
    
    labelOther = tkinter.Label(frameTwo, fg='red')
    labelOther.pack(padx=10, pady=5)
    
    notebook.add(frameOne, text='选项卡1')
    notebook.add(frameTwo, text='选项卡2')
    notebook.pack(padx=10, pady=5, fill=tkinter.BOTH, expand=True)
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    谢谢观看,笔者会持续更新,如有错误或者建议,请私信我

    展开全文
  • Tkinter笔记本 这是用tkinter(python)编写的文本编辑器
  • Python tkinter--第21章 Notebook控件

    千次阅读 2019-09-16 09:01:33
    第21章 Notebook控件 Notebook控件是定义在ttk.py中的控件。Notebook控件可以管理很多窗口,但是一次只能显示一个窗口。通过点击窗口标签可以选择不同的窗口来显示。 窗口可以一般是一个由很多子控件的Frame控件。...

    第21章 Notebook控件
    Notebook控件是定义在ttk.py中的控件。Notebook控件可以管理很多窗口,但是一次只能显示一个窗口。通过点击窗口标签可以选择不同的窗口来显示。
    窗口可以一般是一个由很多子控件的Frame控件。可以通过Notebook的add()方法添加窗口或者Tab。被选中的Tab叫’selected Tab’。也可以根据需要删除或者隐藏Tab。
    21.1 属性

    属性 描述
    class_ Notebook 控件的名称
    cursor 鼠标经过Notebook控件时候的形状
    height Notebook控件的高度
    padding 定义Notebook控件与其他控件的间隔值
    style 定义Notebook控件的外观,参见24章的介绍
    takefocus 定义是否可以通过Tab获得输入焦点
    width Notebook控件的宽度

    21.1.1 class_
    Notebook的名称。
    21.1.2 cursor
    鼠标经过Notebook控件时候的形状。

    import tkinter as tk
    from tkinter import ttk
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root,cursor='spider')
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label')
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    root.mainloop()
    

    结果:
    在这里插入图片描述
    21.1.4 padding
    定义Notebook控件与其他控件的间隔值。
    21.1.3 height
    Notebook控件的高度,默认单位是像素。也可以是其他的长度单位。详细说明见3.3.1节。
    21.1.4 padding
    设置Notebook控件与其他控件的间距。
    21.1.5 style
    Notebook控件的设置,如背景颜色等等。参见第24章的有关说明。
    21.1.6 takefocus
    是否可以通过Tab键获得输入焦点
    21.1.7 width
    Notebook控件的宽度,默认单位是像素。也可以是其他的长度单位。详细说明见3.3.1节。
    21.2 方法

    方法 描述
    add(child, **kw) 添加标签页(Tab)
    forget(tab_id) 删除索引值为tab_id的标签页
    hide(tab_id) 隐藏索引值为tab_id的标签页
    index(tab_id) 返回tab_id代表的Tab的数字索引值
    insert(pos, child, **kw) 在pos指定的位置插入子控件
    select(tab_id) 选择tab_id代表的Tab,并显示其中的内容
    tab( tab_id, option=None, **kw) 设置Tab参数,或者返回Tab的属性字典
    tabs() 返回当前Notebook的Tab列表,列表中包含所有的Tab
    enable_traversal() 使能热键应用

    21.2.1 add(child, **kw)
    添加子窗口到Notebook控件。通常这个child是一个Frame或者LabelFrame。此子窗口或者控件不需要pack或者grid。Notebook控件会默认添加一个Tab,来容纳这个子控件。添加的时候,可以使用的选项见21.3节。

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label')
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    root.mainloop()
    

    结果:
    在这里插入图片描述
    注意:tab1和tab2不能pack()。否则不能正确显示Notebook。tab1和tab2的作用相当于是一个容器。
    21.2.2 forget(tab_id)
    forget方法是彻底的删除以tab_id为索引的Tab,也包括与之有关的所有子控件。这里的删除是指与Tab的关联,而不是这些子控件不在可用。实际上,这些被删除关联的子控件,还可以重新与Tab相关联,只需要简单使用add()就可以了。

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3,sticky=tk.E)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    def forget():
        nb.forget(0)
        
    button2=tk.Button(root,text='Forget',command=forget)
    button2.pack()
    def add():
        nb.add(tab1,text='重新添加tab1')
    
    button3=tk.Button(root,text='Add',command=add)
    button3.pack()
    root.mainloop()
    

    21.2.3 hide(tab_id)
    hide的方法与forget类似,区别是hide并没有删除子控件与Tab的关联,而只是隐藏了Tab以及其中的内容。可以简单的使用add()恢复Tab的显示。

    import tkinter as tk
    from tkinter import ttk
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3,sticky=tk.E)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    def hide():
        nb.hide(0)
        
    button2=tk.Button(root,text='Hide',command=hide)
    button2.pack()
    def add():
        nb.add(tab1,text='恢复显示tab1')
    
    button3=tk.Button(root,text='Add',command=add)
    button3.pack()
    
    root.mainloop()
    

    说明:hide之后使用add,Tab的索引等都不改变,显示的位置也不变。这与使用forget之后再调用add是不同的。
    21.2.4 index(tab_id)
    返回tab_id代表的Tab的数字索引值。tab_id应该输入的是一个字符或者其他形式的Tab标识方法。
    注意:如果输入的参数是’end’,返回值是所有Tab的总数,而不是最后一个Tab的索引。
    21.2.5 insert(pos, child, **kw)
    在pos指定的位置插入子控件。与add的唯一区别是指定在何处插入子控件。pos的取值可以是:
    (1)已经加入到Notebook的控件(使用add或者insert加入的控件,比如下面代码中的tab1等)
    (2)‘end’。标识在所有Tab的后面插入新的子控件,相当于调用add()

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3,sticky=tk.E)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab2,text='标签1')
    label1.pack()
    button1=tk.Button(tab1,text='按钮1',width=20,state=tk.DISABLED)
    button1.pack()
    
    tab3=tk.Frame(nb)
    entry1=tk.Entry(tab3)
    entry1.pack()
    
    def insert():
        nb.insert(tab2,tab3,text='插入的Tab')
    button3=tk.Button(root,text='Insert',command=insert)
    button3.pack()
    root.mainloop()
    

    21.2.6 select(tab_id)
    选择tab_id代表的Tab,并显示其中的内容。相当于鼠标点击了相应的Tab。
    tab_id的取值:
    (1)Tab数值索引
    (2)Tab子控件索引
    (3)None 显示当前的Tab

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3,sticky=tk.E)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    
    tab3=tk.Frame(nb)
    entry1=tk.Entry(tab3)
    entry1.pack()
    
    def select():
        nb.select(tab2)
    button3=tk.Button(root,text='Select',command=select)
    button3.pack()
    
    root.mainloop()
    

    21.2.7 tab( tab_id, option=None, **kw)
    tab的方法有两种作用:
    (1)设置Tab的属性参数
    需要输入tab_id以及相应的属性键值对。比如:
    nb.tab(tab1,text=‘新名字’)

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3,sticky=tk.E)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    
    tab3=tk.Frame(nb)
    entry1=tk.Entry(tab3)
    entry1.pack()
    
    def tab():
        nb.tab(tab1,text='新名字')
    button3=tk.Button(root,text='Tab',command=tab)
    button3.pack()
    
    root.mainloop()
    

    结果:
    在这里插入图片描述
    在这里插入图片描述
    说明:点击’Tab’按钮后,第一个Tab的标签改为’新名字’

    (2)获取Tab的属性参数字典
    如果只输入tab_id,那么返回的是Tab的属性参数字典。

    import tkinter as tk
    from tkinter import ttk
     
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    
    tab3=tk.Frame(nb)
    entry1=tk.Entry(tab3)
    entry1.pack()
    
    def tab():
        print(nb.tab(1))
    button3=tk.Button(root,text='Tab',command=tab)
    button3.pack()
    
    root.mainloop()
    
    结果:
    {'padding': [0], 'sticky': 'nsew', 'state': 'normal', 'text': 'Button', 'image': '', 'compound': 'none', 'underline': -1}
    

    21.2.8 tabs()
    返回当前Notebook的Tab列表,列表中包含所有的Tab。

    import tkinter as tk
    from tkinter import ttk
    root = tk.Tk()
    root.geometry('320x240')
    nb=ttk.Notebook(root)
    tab1=tk.Frame(nb)
    nb.add(tab1,text='Label',underline=3)
    tab2=tk.Frame(nb)
    nb.add(tab2,text='Button')
    nb.pack()
    label1=tk.Label(tab1,text='标签1')
    label1.pack()
    button1=tk.Button(tab2,text='按钮1',width=20)
    button1.pack()
    tab3=tk.Frame(nb)
    entry1=tk.Entry(tab3)
    entry1.pack()
    def tabs():
        print(nb.tabs())
    button3=tk.Button(root,text='Tabs',command=tabs)
    button3.pack()
    root.mainloop()
    
    结果:
    ('.!notebook.!frame', '.!notebook.!frame2')
    

    21.2.9 enable_traversal()
    调用该方法后,可以使用如下的热键:
    (1)Control+Tab键
    选择下一个Tab。如果当前的Tab已经是最后一个,那么会跳到第一个Tab中。与Tab键的区别是什么?如果按动Tab键,是在当前Tab子控件中跳转。
    (2)Shift-Control-Tab
    与Control+Tab键相反,按下Shift-Control-Tab后是向前跳转。如果已经是第一个Tab了,会跳转到最后一个Tab。
    (3)Alt+x
    可以为Tab定义热键,直接跳转到指定的Tab。热键的定义方法如下:
    (1)使用text定义Tab的名字
    (2)使用underline定义热键(显示下划线)
    (3)按动Alt+x,就可以使用热键了

    注:(1)和(2)是默认的选项了。不调用enable_traversal()也可以使用,但是热键的定义,必须显式调用enable_traversal()才能实现。

    展开全文
  • Tkinter打造GUI开发工具(19)ttk.Notebook笔记本小部件 ttk.Notebook笔记本组件类似多页的Frame,通过点击顶部标签的选项卡选择不同容器。笔记本小部件的目的是提供一个区域,用户可以通过单击区域顶部的选项卡来...

    用Tkinter打造GUI开发工具(19)ttk.Notebook笔记本小部件
    ttk.Notebook笔记本组件类似多页的Frame,通过点击顶部标签的选项卡选择不同容器。笔记本小部件的目的是提供一个区域,用户可以通过单击区域顶部的选项卡来选择内容页面,如下所示:
    每次用户单击其中一个选项卡时,窗口小部件将显示 与该选项卡关联的子窗格。通常,每个窗格都是 Frame窗口小部件,但窗格可以是任何窗口小部件。
    当前显示的子窗格的选项卡称为选定选项卡。
    您将使用Notebook窗口小部件的.add()方法附加新选项卡及其相关内容。其他方法允许您删除或暂时隐藏选项卡。
    每个选项卡都有自己的一组选项来控制其外观和行为。
    要将Notebook窗口小部件创建为某个窗口小部件的子parent窗口,请使用以下构造函数:

    w= ttk.Notebook(parent,option= value,...)
    

    ttk.Notebook选项包括:
    在这里插入图片描述
    ttk.Notebook小部件上的方法包括所有ttk小部件共有的方法”中描述的所有方法,以及以下方法:

    .add(child, **kw)
    

    该child 参数是一个小部件,通常Frame,它包装一个子窗格中的内容。如果child不是Notebook窗口小部件的子窗格之一,child则添加为下一个可用选项卡,关键字参数kw定义新窗格的选项卡选项。这些选项在表51“ ttk.Notebook 小部件的选项卡选项”中定义。
    如果child是当前隐藏的窗格,则该选项卡将重新显示在其以前的位置。

    .enable_traversal()
    

    一旦调用此方法,一些额外的键绑定将起作用:
    Control-Tab将在当前选择的选项卡后选择选项卡。如果当前选择了最后一个选项卡,则选择将旋转回第一个选项卡。
    Shift-Control-Tab执行相反操作:它移动到上一个选项卡,如果选择了第一个选项卡,则环绕到最后一个选项卡。
    您可以配置直接选择选项卡的特定热键。要执行此操作,请使用text和underline选项卡选项为每个选项卡中的一个字符加下划线。然后,用户可以通过键入Alt-跳转到选项卡,x其中 x是该选项卡上带下划线的字符。
    如果Notebook在同一个应用程序中有多个小部件,则除非创建每个子窗格小部件并将其Notebook窗口小部件作为父窗口小部件,否则这些功能将无法正常工作。

    .forget(child)
    

    此方法child从窗口小部件的选项卡集中永久删除指定的内容。

    .hide(tabId)
    

    标识的选项卡tabId暂时从中显示的可见选项卡集中删除Notebook。您可以通过.add() 再次调用该方法来恢复它。

    .index(tabId)
    

    对于给定的tabId,此方法返回相应选项卡的数字索引。有一个例外:如果参数是字符串"end",则该方法将返回选项卡的总数。

    .insert(where, child,**kw)
    

    此方法使用任何关键字参数将窗口小部件插入到child指定的位置 where,以描述新选项卡和窗格。有关关键字选项,请参阅表51“ ttk.Notebook 小部件的选项卡选项”。
    该where 参数可以是任何的:
    “end” 在所有现有选项卡之后放置新选项卡。
    现有的子窗口小部件; 在这种情况下,new child就在现有小部件之前插入。

    .select([tabId])
    

    如果在没有参数的情况下调用此方法,它将返回当前显示其选项卡的窗口小部件的窗口名称。
    要显示特定窗格Notebook,请使用a tabId作为参数调用此方法。

    .tab(tabId, option=None, **kw)
    

    使用此方法可以为所描述的子窗格设置选项卡选项tabId,或者找出为该子窗格设置的选项。
    如果您调用没有关键字参数的方法,它将返回当前对指定的窗格有效的选项卡选项的字典tagId。
    要查找特定选项卡选项的当前值 X,请使用参数“option=X” 调用此方法,该方法将返回该选项卡选项的值。
    要为描述的子项设置一个或多个选项卡选项tagId,请使用关键字参数调用此方法。例如,如果self.nb 是 Notebook,则此调用将更改第一个选项卡上显示的文本:

    self.nb.tab(0, text=‘Crunchy frog’)

    .tabs()
    

    此方法返回的列表窗口名称中的Notebook的子窗格中,从第一个到最后的次序。
    以下是.add()和 .tab()方法中使用的选项卡选项。
    ttk.Notebook 小部件的选项卡选项。

    在这里插入图片描述
    ttk.Notebook 小部件的虚拟事件。每当选定的选项卡在ttk.Notebook小部件中更改时,它都会生成“ <>”虚拟事件。
    下面看一个ttk.Notebook 小部件的演示程序.

    # -*- coding: utf-8 -*-
    import tkinter as tk  #装载tkinter模块,用于Python3
    from tkinter import ttk  #装载tkinter.ttk模块,用于Python3
    
    root =tk.Tk()  # 创建窗口对象
    root.title(string = 'ttk.Notebook演示')  #设置窗口标题
    root.geometry('400x300+200+200')
    
    tabControl = ttk.Notebook(root)  #创建Notebook
    tab1 = tk.Frame(tabControl,bg='blue')  #增加新选项卡
    tabControl.add(tab1, text='信息窗')  #把新选项卡增加到Notebook
    tab2 = tk.Frame(tabControl,bg='yellow')
    tabControl.add(tab2, text='综合信息')
    tab3 = tk.Frame(tabControl,bg='green')
    tabControl.add(tab3, text='技术分析')
    tab4 = tk.Frame(tabControl,bg='blue')
    tabControl.add(tab4, text='编写代码')
    tab5 = tk.Frame(tabControl,bg='blue') 
    tabControl.add(tab5, text='模拟回测')
    
    tab6 = ttk.Frame(tabControl) 
    tabControl.add(tab6, text='双色球')
    tab7 = ttk.Frame(tabControl) 
    tabControl.add(tab7, text='大乐透')
    tabControl.pack(expand=1, fill="both")
    
    tabControl.select(tab1) #选择tab1
    
    root.mainloop()     # 进入消息循环
    

    程序运行结果如下图。
    在这里插入图片描述
    上面程序我们混合使用了tk和ttk的Frame组件。
    ttk.Notebook为我们的Tkinter增加了一个新的功能部件,但是这个部件的Tab名只能在左上角显示,我们无法把它移动到左下角。
    因此我们对 ttk.Notebook不满意,可以自己设计一个Notebook2组件。
    下面看我把我在HP_tk2中设计的Notebook2组件类展示给大家,大家可以参照此组件类设计更多的新组件。

     # -*- coding: utf-8 -*-
    import tkinter as tk  #装载tkinter模块,用于Python3
    from tkinter import ttk  #装载tkinter.ttk模块,用于Python3
    
    #------------HP_tk2中Notebook2模块
    class Notebook2(tk.Frame): # 继承Frame类的Notebook类
        def __init__(self, master=None,m=0,anchor=tk.NW, size=9,width=10,**kw):  
            tk.Frame.__init__(self, master,**kw)  
            self.root = master #定义内部变量root
            self.m=m
            self.width=width
            self.size=size
            self.anchor=anchor
            self.s1=tk.TOP
            self.s2=tk.BOTTOM
            if (self.anchor in [tk.SW,tk.S,tk.SE]):
                self.s1=tk.BOTTOM
                self.s2=tk.TOP
            self.t=[]
            self.v=[]
            self.view=None
            self.pack(side=self.s2, fill=tk.BOTH, expand=1,ipady=1,pady=1,ipadx=1,padx=1)
    
            self.tab()
    
    
        def add(self,tab=None,text=''):
            if (tab!=None):
                self.m=self.m+1
                def handler (self=self, i=self.m-1 ):
                    self.select(i)
                
                if (self.anchor in [tk.NW,tk.N,tk.SW,tk.S]):
                    self.button = tk.Button(self.tab, width=self.width,text=text, cursor='hand2',
                                            anchor=tk.S,
                                            font=('Helvetica', '%d'%self.size),
                                            command=handler)
                    self.t.append(self.button)
                    self.button.pack(side=tk.LEFT)
                    self.v.append(tab)
                    if (self.m==1):
                        self.select(0)
    
    
                if (self.anchor in [tk.NE,tk.SE]):
                    self.button = tk.Button(self.tab, width=self.width,text=text, cursor='hand2',
                                            anchor=tk.S,
                                            font=('Helvetica','%d'%self.size),
                                            command=handler)
                    self.t.append(self.button)
                    self.button.pack(side=tk.RIGHT)
                    self.v.append(tab)
                    if (self.m==1):
                        self.select(0)
    
    
        def tab(self):
            self.tab=tk.Frame(self)
            if (self.anchor in [tk.N,tk.S]):
                self.tab.pack(side=self.s1)
            if (self.anchor in [tk.NW,tk.NE,tk.SW,tk.SE]):
                self.tab.pack(side=self.s1,fill=tk.X)
    
            
            for i in range(self.m):
                def handler (self=self, i=i ):
                    self.select(i)
                self.button = tk.Button(self.tab, width=self.width,text='Tab%d'%i, cursor='hand2',
                                        anchor=tk.S,
                                        font=('Helvetica','%d'%self.size),
                                        command=handler)
                self.t.append(self.button)
                self.v.append(None)
                if (self.anchor in [tk.NW,tk.SW]) :
                    self.button.pack(side=tk.LEFT)
                else:
                    self.button.pack(side=tk.RIGHT)
                
            self.update()
    
             
        def frame(self):
            self.frame=tk.Frame(self,bd=2,
                                borderwidth=2,  #边框宽度
                                padx=1,  #部件x方向间距
                                pady=1, #部件y方向间距
                                )
            self.frame.pack(side=self.s2,fill=tk.BOTH, expand=1)         
    
    
        def select(self,x):
            print(x)
            if (self.view!=None):
                self.view.pack_forget()
            for i in range(self.m):
                self.t[i]['relief']=tk.RIDGE
                self.t[i]['anchor']=tk.S
                self.t[i]['bg']="#F0F0ED"
                
            self.t[x]['anchor']=tk.N
            self.t[x]['bg']='white'
            self.view=self.v[x]
            if (self.view!=None):
                self.view.pack(fill=tk.BOTH, expand=1)   
    
    
        def modify(self,x,tab=None,text=''):
            if (x>self.m-1):
                return
            if (tab!=None):
                self.v[x]=tab
            if (text!=''):
                self.t[x]['text']=text
    #------上面是class Notebook2定义
    
    root =tk.Tk()  # 创建窗口对象
    root.title(string = 'ttk.Notebook演示')  #设置窗口标题
    root.geometry('800x600+200+200')
    
    tabControl = ttk.Notebook(root)  #创建Notebook
    tab1 = tk.Frame(tabControl,bg='blue')  #增加新选项卡
    tabControl.add(tab1, text='信息窗')  #把新选项卡增加到Notebook
    tab2 = tk.Frame(tabControl,bg='yellow')
    tabControl.add(tab2, text='综合信息')
    tab3 = tk.Frame(tabControl,bg='green')
    tabControl.add(tab3, text='技术分析')
    tab4 = tk.Frame(tabControl,bg='blue')
    tabControl.add(tab4, text='编写代码')
    tab5 = tk.Frame(tabControl,bg='blue') 
    tabControl.add(tab5, text='模拟回测')
    
    tab6 = ttk.Frame(tabControl) 
    tabControl.add(tab6, text='双色球')
    tab7 = ttk.Frame(tabControl) 
    tabControl.add(tab7, text='大乐透')
    tabControl.pack(expand=1, fill="both")
    
    tabControl.select(tab1) #选择tab1
    #---------------演示1------------------------------------
    mytabControl=Notebook2(tab1,anchor=tk.SW)
    mytab1 = tk.Frame(mytabControl,bg='red')  #增加新选项卡
    mytabControl.add(mytab1,text='信息1')
    mytab2 = tk.Frame(mytabControl,bg='blue')  #增加新选项卡
    mytabControl.add(mytab2,text='信息2')
    mytab3 = tk.Frame(mytabControl,bg='yellow')  #增加新选项卡
    mytabControl.add(mytab3,text='信息3')
    #---------------演示2------------------------------------
    mytabControl2=Notebook2(tab2,m=3)
    mytabControl3=Notebook2(tab3,m=4,anchor=tk.SW)
    mytabControl4=Notebook2(tab4,m=5,anchor=tk.S)
    mytabControl5=Notebook2(tab5,m=4,anchor=tk.N)
    mytabControl6=Notebook2(tab6,m=5,anchor=tk.SE)
    mytabControl7=Notebook2(tab7,m=4,anchor=tk.NE)
    
    root.mainloop()     # 进入消息循环
    

    下面是运行结果。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 21.3 Tab的属性 添加Tab(标签)的时候,可以使用的属性有: 21.3.1 compound 如果在Tab的名字中,同时...定义子控件与Notebook边框之间的填充距离。这个距离是在子控件四边都填充的。如下图所示。填充距离是可以指...
  • from tkinter import * pw = PanedWindow(orient=VERTICAL) # 创建PanedWindow对象 pw.pack(fill=BOTH,expand=True) top = Label(pw,text="Top Pane") # 创建标签Top Pane pw.add(top) # top标签插入Paned
  • 在运行完turtle程序后,调用Tkinter的mainloop函数来结束Tkinter图形界面再继续跑turtle程序。函数文档里面也说了,只要不是用IDLE来跑turtle的话,在其它图形界面的程序里都需要在最后调用mainloop函数。
  • Python tkinter 自定义tabview

    千次阅读 多人点赞 2019-04-09 15:19:52
    ttk中虽然添加了Notebook,但其功能过于简单,无法支持双击创建选项卡,删除选项卡等功能,于是自定义了tabview,有需要的朋友,可以参考在tkinter中自定义view的方法,自定义自己的view 源码地址 如果觉得有用,...
  • python tkinter 创建分页界面

    千次阅读 2020-06-24 15:51:38
    为python tkinter界面创建分页栏。 需要使用Notebook()和Frame()。 使用Notebook()创建分页栏,Frame()创建多个框架来当做不同的页面。 import matplotlib.pyplot as plt from tkinter import * import tkinter.ttk ...
  • PTUData实现了Notebook中’Syslog’和’SNMP’两个Tab的界面的实现。因为他们只是发送数据协议不同,但是元数据是一样的,所以可以通过一个类来实现。界面如下图所示。 代码如下: # coding=gbk import tkinter as ...
  • 为了弥补这点不足,Tkinter 后来引入了一个 ttk 组件作为补充(主要就是简单包装、美化一下),并使用功能更强大的 Combobox 取代了原来的 Listbox,且新增了 LabeledScale(带标签的 Scale)、Notebook(多文档窗.....
  • tkinter简单程序——Mag

    2020-08-31 23:12:14
    编写环境:Anaconda+JupyterNotebook+python3.7 需要库详见后面代码,主体分为下面三部分: 科学计算: numpy math 文件处理 xlrd xlwt xlutils UI设计 tkinter PIL 当然,因为后面我需要将制作的可视...
  • Tkinter学习笔记(四)

    2021-01-08 17:05:54
    tix和ttk控件介绍ttk.NoteBook控件ttk.Treeview控件form表格几何管理器tix.Balloon气球窗口控件tix.ButtonBox按钮框控件tix.combobox组合框控件tix.control控制窗口组件 介绍 tix库提供了tk库缺失的...import tkinter
  • 我正在编写Python应用程序。我使用Tkinter+PythonMegaWidgets是为了...在稍后,我需要从NoteBook中检索“自定义框架”实例,调用我添加的自定义成员函数;问题从这里开始。。。在尽管有Duck类型的原则,但我无法...
  • 这部分主要是一个Notebook控件,控件有3个Tab,分别是系统配置、Syslog和SNMP。 系统配置主要完成发送设置,可以按次数发送,也可以设置每秒发送多少次。日志选择的功能是设置是否打印日志。日志在窗...
  • Tkinter实现带标签的记事本

    千次阅读 2015-11-30 23:39:13
    #-*-coding:utf-8-*- ''' Created on 2015年11月30日@author: Zroad '''from Tkinter import *class Notebook(object): def __init__(self, master, side=LEFT): self.active_fr = None self.count =

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

notebooktkinter