我开始认识Tkinter,但是在尝试和练习时,我陷入了困境。我不知道如何在Tkinter笔记本电脑中将tkinter元素(例如框架或标签)从一个标签移动到另一个标签。 足智多谋的链接或有关我的问题的答案将非常有帮助!
P.S:这是我第一次问一个问题,如果我做错了事,我深表歉意。
答案 0 :(得分:1)
在窗口框之间移动小部件是非常不寻常的。通常,最简单的方法是删除旧的小部件并在新位置创建一个新的小部件。但是,尽管有一些限制,也可以移动窗口小部件。
小部件以树状结构存在,以根窗口为树的起点。除根窗口外,其他所有小部件都具有父级。您不能将小部件移动到树的不同分支,因此要从一帧移动到另一帧,两个帧和标签都必须具有相同的父对象。
通常,在使用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()