Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tkinter Python:一次移动多个小部件_Python_Tkinter - Fatal编程技术网

Tkinter Python:一次移动多个小部件

Tkinter Python:一次移动多个小部件,python,tkinter,Python,Tkinter,如果我在一个框架内有多个小部件,有没有一种方法可以用命令一次移动所有小部件的位置?我正在使用.place管理器。谢谢 我会定义变量ref_y和ref_y,然后将它们添加到我当前的x和y值中,如下所示: import tkinter as tk root = tk.Tk() ref_x = 40 ref_y = 56 btn = tk.Button(root, text="Button") lbl = tk.Label(root, text="Label") btn.place(x=ref

如果我在一个框架内有多个小部件,有没有一种方法可以用命令一次移动所有小部件的位置?我正在使用.place管理器。谢谢

我会定义变量
ref_y
ref_y
,然后将它们添加到我当前的
x
y
值中,如下所示:

import tkinter as tk

root = tk.Tk()

ref_x = 40
ref_y = 56

btn = tk.Button(root, text="Button")
lbl = tk.Label(root, text="Label")

btn.place(x=ref_x + 45, y=ref_y + 13)
lbl.place(x=ref_x + 13, y=ref_y + 44)

root.mainloop()

在上述示例中,
btn
lbl
将与
ref\u x
ref\u y
一起放置。这意味着,如果要将小部件放置在其他位置,保持它们彼此的相对位置,只需修改
ref\u x
ref\u y
值。

如果在
Frame
中有all,则可以移动
Frame
,它将随着所有元素一起移动

使用
place\u-forget()
将其从窗口中移除,再次使用
place()
将其置于新位置

import tkinter as tk
import random

# --- funtions ---

def move():
    # hide frame
    f.place_forget()

    # random positiom
    new_x = random.randint(0, 100)
    new_y = random.randint(0, 150)

    # show in new place
    f.place(x=new_x, y=new_y)

# --- main ---

root = tk.Tk()

f = tk.Frame(root)
f.place(x=0, y=0)

tk.Label(f, text='HELLO!').pack()
tk.Button(f, text='Move it', command=move).pack()

root.mainloop()

您可以一次移动所有元素的
Frame
,也可以单独移动每个元素。用
place\u-forget()
删除
Frame
(或每个元素),然后用
place()
重新放置。我建议您多解释一下您试图实现的目标。如果您觉得需要将一组小部件作为一个整体移动,那么可能有比使用
place
更好的解决方案。