我有两种类型的窗口: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为何会移动?
已经非常感谢
对不起,所有进口商品
答案 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()