如何在笔记本tkinter中将标签从一个标签移动到另一个标签?

时间:2018-08-08 18:50:22

标签: python python-3.x tkinter tkinter-canvas

我开始认识Tkinter,但是在尝试和练习时,我陷入了困境。我不知道如何在Tkinter笔记本电脑中将tkinter元素(例如框架或标签)从一个标签移动到另一个标签。 足智多谋的链接或有关我的问题的答案将非常有帮助!

P.S:这是我第一次问一个问题,如果我做错了事,我深表歉意。

1 个答案:

答案 0 :(得分:1)

在窗口框之间移动小部件是非常不寻常的。通常,最简单的方法是删除旧的小部件并在新位置创建一个新的小部件。但是,尽管有一些限制,也可以移动窗口小部件。

小部件以树状结构存在,以根窗口为树的起点。除根窗口外,其他所有小部件都具有父级。您不能将小部件移动到树的不同分支,因此要从一帧移动到另一帧,两个帧和标签都必须具有相同的父对象。

通常,在使用packplacegrid时,将在其父级中放置小部件。您可以使用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()