如何在笔记本 tkinter 中将标签从一个选项卡移动到另一个选项卡?
How to move labels from one tab to another in notebook tkinter?
我开始了解 Tkinter,但我在试验和练习时卡在了某个点上;我不知道如何在 Tkinter Notebook 中将框架或标签等 tkinter 元素从一个选项卡移动到另一个选项卡。
足智多谋 link 或有关我的问题的答案将非常有帮助!
P.S: 第一次提问,如有不妥请见谅
在帧之间移动小部件是相当不寻常的。通常最简单的方法就是删除旧的小部件并在新位置创建一个新的小部件。但是,可以移动小部件,但有一些限制。
小部件以树状结构存在,根 window 作为树的起点。除了根 window,所有其他小部件都有父级。您不能将小部件移动到树的不同分支,因此要从一个框架移动到另一个框架,两个框架加上标签需要具有相同的父级。
通常情况下,使用 pack
、place
或 grid
时,小部件将放置在其父级中。您可以使用 in_
参数更改它。
以下示例说明了该技术。请注意,要移动的标签 (the_label
) 是笔记本的子项而不是其中一个选项卡的子项,我们使用 in_
参数来指定哪个框架应该具有标签。
import tkinter as tk
from tkinter import ttk
def moveToOne():
the_label.pack(in_=tab1, expand=True, padx=20, pady=20)
def moveToTwo():
the_label.pack(in_=tab2, expand=True, padx=20, pady=20)
root = tk.Tk()
notebook = ttk.Notebook(root)
toolbar = ttk.Frame(root)
toolbar.pack(side="top", fill="x")
notebook.pack(side="top", fill="both", expand=True)
tab1 = ttk.Frame(notebook)
tab2 = ttk.Frame(notebook)
notebook.add(tab1, text="Tab 1")
notebook.add(tab2, text="Tab 2")
the_label = tk.Label(notebook, text="Click a button to move me")
b1 = tk.Button(toolbar, text="Move to tab 1", command=moveToOne)
b2 = tk.Button(toolbar, text="Move to tab 2", command=moveToTwo)
b1.pack(side="left")
b2.pack(side="left")
# initialize it to be on the first tab
moveToOne()
root.mainloop()
我开始了解 Tkinter,但我在试验和练习时卡在了某个点上;我不知道如何在 Tkinter Notebook 中将框架或标签等 tkinter 元素从一个选项卡移动到另一个选项卡。 足智多谋 link 或有关我的问题的答案将非常有帮助!
P.S: 第一次提问,如有不妥请见谅
在帧之间移动小部件是相当不寻常的。通常最简单的方法就是删除旧的小部件并在新位置创建一个新的小部件。但是,可以移动小部件,但有一些限制。
小部件以树状结构存在,根 window 作为树的起点。除了根 window,所有其他小部件都有父级。您不能将小部件移动到树的不同分支,因此要从一个框架移动到另一个框架,两个框架加上标签需要具有相同的父级。
通常情况下,使用 pack
、place
或 grid
时,小部件将放置在其父级中。您可以使用 in_
参数更改它。
以下示例说明了该技术。请注意,要移动的标签 (the_label
) 是笔记本的子项而不是其中一个选项卡的子项,我们使用 in_
参数来指定哪个框架应该具有标签。
import tkinter as tk
from tkinter import ttk
def moveToOne():
the_label.pack(in_=tab1, expand=True, padx=20, pady=20)
def moveToTwo():
the_label.pack(in_=tab2, expand=True, padx=20, pady=20)
root = tk.Tk()
notebook = ttk.Notebook(root)
toolbar = ttk.Frame(root)
toolbar.pack(side="top", fill="x")
notebook.pack(side="top", fill="both", expand=True)
tab1 = ttk.Frame(notebook)
tab2 = ttk.Frame(notebook)
notebook.add(tab1, text="Tab 1")
notebook.add(tab2, text="Tab 2")
the_label = tk.Label(notebook, text="Click a button to move me")
b1 = tk.Button(toolbar, text="Move to tab 1", command=moveToOne)
b2 = tk.Button(toolbar, text="Move to tab 2", command=moveToTwo)
b1.pack(side="left")
b2.pack(side="left")
# initialize it to be on the first tab
moveToOne()
root.mainloop()