创建新选项卡(ttk 笔记本)时如何保留小部件?

How to keep widgets when a new tab(ttk notebook) is created?

所以我有一个起始选项卡,里面有一个文本框。我还想通过单击按钮创建一个新选项卡。当我创建新选项卡时,它不显示文本框。我希望所有选项卡都具有相同的文本框和相同的小部件。

到目前为止,这是我的代码:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("600x600")

def newTab(*args): # How do I keep the textbox and other widgets in the new tabs
    newFrame = Frame(root, width=500, height=500)
    newFrame.pack()
    tabsArea.add(newFrame, text="Untitled.txt")

button = Button(root, command=newTab).pack()

# Tab Area --- First Tab 
tabsArea = ttk.Notebook(root)
tabsArea.pack(pady=15)

# Create Main Frame 
frame = Frame(root)
frame.pack(pady=5)

# Add Frame to Tab
tabsArea.add(frame, text="Untitled.txt")

# Textbox
textBox = Text(frame).pack()

root.mainloop()

如何在 newFrame/new 选项卡中配置文本框和小部件?

您需要在每个选项卡中添加一个新的文本小部件。您的代码只是在创建空框架。此外,您不应该调用 newFrame.pack(),因为您正在将 newFrame 添加到笔记本中。

这是您的代码的精简版本,其中显示了基本概念:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("600x600")

def newTab(*args): 
    newFrame = Frame(root, width=500, height=500)
    tabsArea.add(newFrame, text="Untitled.txt")
    text = Text(newFrame)
    text.pack(fill="both", expand=True)

button = Button(root, text="New Tab", command=newTab)
tabsArea = ttk.Notebook(root)

button.pack(side="top")
tabsArea.pack(pady=15, fill="both", expand=True)

# Add the first tab
newTab()

root.mainloop()