我有两种类型的窗口: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为何移动我?
已经非常感谢您
对不起,所有进口商品
正如我在评论中建议的那样,应用程序中不应包含两个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()