创建新标签(ttk笔记本)时如何保留小部件?
Posted
技术标签:
【中文标题】创建新标签(ttk笔记本)时如何保留小部件?【英文标题】:How to keep widgets when a new tab(ttk notebook) is created? 【发布时间】:2021-01-21 21:53:24 【问题描述】:所以我有一个启动选项卡,里面有一个文本框。我还想在单击按钮时创建一个新选项卡。当我创建新选项卡时,它不显示文本框。我希望所有选项卡都具有相同的文本框和相同的小部件。
到目前为止,这是我的代码:
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 tab 中配置文本框和小部件?
【问题讨论】:
您实际上想要哪一个:在新标签中显示相同小部件,还是复制这些小部件?如果是第一种情况,则不可能如本题“can-you-change-a-widgets-parent-in-python-tkinter”中所述。 【参考方案1】:您需要在每个选项卡中添加一个新的文本小部件。您的代码只是创建空帧。此外,您不应该调用 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()
【讨论】:
以上是关于创建新标签(ttk笔记本)时如何保留小部件?的主要内容,如果未能解决你的问题,请参考以下文章
如何自定义 tkinter/ttk 小部件和框架的边框颜色?