如何在tkinter-ttk笔记本的特定位置插入选项卡



我想知道如何在特定位置设置tkinter笔记本选项卡。例如,我有一个选项卡,允许您克隆其他选项卡,但我希望它保留在最后。不过,我尝试的代码似乎不起作用,因为它生成了一个tkinter。TclError:";从索引(无论多少(越界";。

`

from tkinter import *
from tkinter import ttk, messagebox as msg
from widgets.translate import Translator
from widgets.explore import FileExplorer
root = Tk()
root.title('Widgets')
tabs = ttk.Notebook(root, width=900, height=350)
tabs.pack(fill='both', expand=1, pady=(5, 0))
tr = ttk.Frame(tabs)
tr_frame = ttk.Frame(tr)
tr_frame.pack(fill=Y)
tabs.add(tr, text='Translator')

Translator(tr_frame)
explorers=0
translators=0
def fileexplore_tab(index=2):
global explorers
fl_explore = ttk.Frame(tabs)
tabs.insert(index, fl_explore, text='File Explorer')
FileExplorer(fl_explore)
explorers += 1
fileexplore_tab(2)
fileexplore_tab(len(tabs.tabs())-1)
print(len(tabs.tabs()))
root.mainloop()

`

如何在tkinter-ttk笔记本的特定位置插入选项卡?

insert方法允许您指定整数id。例如,下面的代码创建四个选项卡,然后在中间插入第五个选项卡。

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
notebook = ttk.Notebook(root)
notebook.pack(fill="both", expand=True)
for color in ("red", "orange", "green", "blue"):
frame = tk.Frame(notebook, background=color)
notebook.add(frame, text=color)
extra_frame = tk.Frame(notebook, background="white")
notebook.insert(2, extra_frame, text="white")
root.mainloop()

insert的第一个参数是数字索引。制表符以零开始编号,因此位置0将插入制表符作为第一个制表符。您可以使用字符串"end"在末尾插入制表符。

last_frame = tk.Frame(notebook, background="black")
notebook.insert("end", last_frame, text="black")

索引不得大于选项卡的数量。

您也可以指定一个特定的制表符,而不是数字。例如,在上面的last_frame示例中,可以使用last_frame而不是整数位置将制表符直接插入到制表符之前。

new_frame = tk.Frame(notebook, background='bisque')
notebook.insert(last_frame, new_frame, text="bisque")

最新更新