一起移动两个窗口

时间:2020-04-14 10:13:54

标签: python windows tkinter binding move

我有两种类型的窗口:Main和Child。当我移动main时,所有子窗口也必须移动。 因此,我尝试编写一种方法,但是我对Tkinter并不陌生,所以有点困难。 Tkinter已经提供了一种方法吗? 发生两个错误:

第21行,如果second_window!=无,则在move_me中: NameError:名称“ second_window”未定义

wm_geometry()需要1到2个位置参数,但给出了3个位置

''''将tkinter导入为tk 从tkinter导入* 从tkinter导入Tk 从functools导入部分 从tkinter导入文件对话框 将tkinter导入为tk

root=Tk()

def second_window_X():
    global second_window
    second_window=Tk()
    label=Label(second_window, text='window')
    label.pack()

button=Button(root, text='second window', command=second_window_X)
button.pack()

def move_me(event):
    if second_window != None:
        x = root.winfo_x()
        y = root.winfo_y()
        second_window.geometry(x,y)
root.bind("<Configure>", move_me)

root.mainloop()````

有人可以给我一个例子,说明如何将两个窗口链接在一起并使它们同时移动吗?谁能向我解释,为什么即使我将其声明为global,我也不知道second_window为何会移动?

已经非常感谢

对不起,所有进口商品

1 个答案:

答案 0 :(得分:1)

正如我在评论中建议的那样,应用程序中不应包含两个Tk实例。您的第二个窗口应该是Toplevel的实例。

下面的代码在移动/调整第一个窗口时移动第二个窗口。

from tkinter import *

root=Tk()

second_window = None

def second_window_X():
    global second_window
    second_window=Toplevel(root)
    label=Label(second_window, text='window')
    label.pack()

button=Button(root, text='second window', command=second_window_X,width=100)
button.pack()

def move_me(event):
    try:
        if second_window != None:
            x = root.winfo_x()
            y = root.winfo_y()
            second_window.geometry(f"+{x}+{y}")
    except NameError:
        pass
root.bind("<Configure>", move_me)

root.mainloop()
相关问题