2017-08-25 12 views
0

これについて何も見つかりませんでした。ToplevelウィンドウをルートTkウィンドウの後ろに作ってください

Tkウィンドウを画面全体に移動させたときに、ルートTkウィンドウの後にToplevelウィンドウを表示する方法はありますか?

私がしていることは、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

さて、もう一度質問してください。私は同時に2つのトップレベルでこれを行うことはできますか?それは1つのみで動作しますが、両方を開くと、クリックした最新のものだけが表示されます。 などありますか? –

+0

@ E.Oregel:「」はありません。あなたが持つことができるトップレベルの数に制限はありません。 –

関連する問題