问题描述
所以我有一个启动器选项卡,其中有一个文本框。我还想在单击按钮时创建一个新选项卡。创建新标签时,它不会显示文本框。我希望所有选项卡都具有相同的文本框和相同的小部件。
到目前为止,这是我的代码:
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()