2017-08-25 290 views
0

我找不到任何東西,並想知道是否有可能。使Toplevel窗口跟隨根Tk窗口

當您將Tk窗口移動到屏幕上時,是否有方法使Toplevel窗口跟隨根Tk窗口?

我所做的是構建一個Tk根窗口root=Tk()。然後我構建Toplevel window=Toplevel()並使頂層窗口與右側的根窗口齊平。我很好奇的是如何將Toplevel窗口錨定到根,所以當我拖動根窗口時,Toplevel窗口隨之而來。

回答

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() 
+0

這完美的作品!謝謝! :) –

+0

好吧,現在只有一個問題。我可以同時做兩個頂層嗎?它適用於一個,但如果我打開這兩個,只有最後一個我點擊將遵循。有沒有像什麼的? –

+0

@ E.Oregel:沒有''。沒有限制你可以擁有多少頂層。 –

相關問題