【问题标题】:How do I create a new tab in a notebook widget in tkinter without replacing the previous tab?如何在 tkinter 的笔记本小部件中创建新选项卡而不替换以前的选项卡?
【发布时间】:2021-05-30 23:45:31
【问题描述】:

所以我用 Python Tkinter 编写了这个程序,它在两个不同的选项卡上有两个框架。第一个有一个按钮,它应该创建与第一个选项卡具有相同框架的第三个选项卡。但是,它没有这样做,而是替换了第一帧。我该如何解决这个问题?

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

# Imports
from tkinter import *
from tkinter import ttk



# Screen
root = Tk()
root.geometry("600x600")
root.title("Example")



# Create New Tab Function
def CreateANewTabFunc():
    TabControl.add(Frame1, text="Tab 3")


    
# Tab Control - Used for Placing the Tabs
TabControl = ttk.Notebook(root)
TabControl.pack()



# Frame 1 = Main Frame
Frame1 = Frame(TabControl, width=500, height=500, bg="Orange")
Frame1.pack()



# Frame 2 = Settings or Something Else
Frame2 = Frame(TabControl, width=500, height=500, bg="Green")
Frame2.pack()



TabControl.add(Frame1, text="Tab 1")
TabControl.add(Frame2, text="Tab 2")



ExampleButton = Button(Frame1, text="Click Here to Add New Tab to notebook", command=CreateANewTabFunc)
ExampleButton.pack()



# Mainloop
root.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter ttk ttkwidgets


    【解决方案1】:

    您不能在两个选项卡上使用相同的框架。如果要创建第三个选项卡,则需要创建第三个框架。

    def CreateANewTabFunc():
        another_frame = Frame(TabControl, bg="pink")
        TabControl.add(another_frame, text="Tab 3")
    

    【讨论】:

    • 如果我只想要那个框架怎么办?为什么我不能使用同一个框架?
    • @Skcoder:为什么?我不知道。这就是它的设计方式。让两个标签页打开完全相同的内容并没有什么意义。
    • 所以我正在尝试制作一个代码编辑器,并且我希望它具有多标签编辑功能,因此用户可以一次处理多个文件。如果我不能在文本框和滚动条上使用相同的框架,我该怎么做?
    • @Skcoder:就像我的回答所说:你用新的滚动条和框架内的新文本小部件制作了一个新框架。这正是笔记本设计的工作方式。如果您一遍又一遍地使用同一个框架,您将只能打开一个文件,并且它会在每个选项卡中打开。
    • 好的,那么我可以在 CreateANewTabFunc 中多次使用 another_frame,因为它在一个函数中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多