将两个窗口一起移动

问题描述 投票:0回答:1

我有两种类型的窗口: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()````

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

已经非常感谢您

对不起,所有进口商品

python windows tkinter binding move
1个回答
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()
© www.soinside.com 2019 - 2024. All rights reserved.