使Toplevel窗口遵循根Tk窗口

时间:2017-08-25 22:17:02

标签: python tkinter tk toplevel

我在这方面找不到任何东西,并且想知道它是否可能。

当您在屏幕上移动Tk窗口时,有没有办法让Toplevel窗口跟随根Tk窗口?

我所做的是构建一个Tk根窗口root=Tk()。然后我构建了Toplevel window=Toplevel()并使顶层窗口与右侧的根窗口齐平。我很好奇的是如何将Toplevel窗口锚定到根目录,因此当我拖动根窗口时,会出现Toplevel窗口。

1 个答案:

答案 0 :(得分:1)

您可以绑定到根窗口的<Configure>事件,该窗口在移动或调整窗口大小时会触发。这样你就可以调整顶层的位置。

import tkinter as tk

class Example:
    def __init__(self):
        self.root = tk.Tk()
        label = tk.Label(self.root, text="Move me around...")
        label.pack(side="top", fill="both", expand=True, padx=20, pady=20)

        self.top = tk.Toplevel()
        label = tk.Label(self.top, text="... and I will follow!")
        label.pack(side="top", fill="both", expand=True, padx=20, pady=20)

        self.root.bind("<Configure>", self.sync_windows)

    def start(self):
        self.root.mainloop()

    def sync_windows(self, event=None):
        x = self.root.winfo_x() + self.root.winfo_width() + 4
        y = self.root.winfo_y()
        self.top.geometry("+%d+%d" % (x,y))

Example().start()