2017-02-05 12 views
0

いつものように、深くネストされたウィジェットのフレームを作成します。このフレームは他のトップレベルを作成することがあります。 フレーム。ウィジェットのToplevelコンテナを調べるにはどうすればよいですか?

私は新しいトップレベルフレームを作成するときに、私は新しいトップレベルが作成されたこれにより、元のトップレベルフレームを保存したいと思いますが、それを作成したボタンが深く、独自のフレームの中にネストされているためにとそのToplevelの階層にどこがあるのか​​分からず、そのToplevelコンテナが他の場所に渡すためにはどうすればよいでしょうか?

ある種のグローバル属性で事前に格納しておく必要がありますか、あるいは何らかのイントロスペクションを使用して検索する方法がありますか? any_widget._root()を呼び出す

は驚くほど文書化されていないwidget._toplevel方法は、おそらくそこにある...私のルートコンテナ(tkinter.Tkインスタンス)をバック与えますか?

EDIT:削除(将来の参照のために)その使用が間違っと混乱たワードフレーム

+0

'Toplevel'があります特定のタイプのウィジェット、 'Frame'は特定のタイプのウィジェットです。したがって、「トップフレーム」はあいまいです。 'Toplevel'のインスタンスや' Frame'のインスタンスを取得することを求めていますか? –

+0

@Brian Oakley:あなたは正しいですよ...もちろん、私のクラスでは過去に私のクラスをどのようにデザインしていたのか、彼らはしばしば一緒になっていました...とにかくToplevelのインスタンスを取得することを頼んでいました... –

答えて

1

ウィジェットのメソッドwinfo_toplevelは、ToplevelまたはTkのインスタンスを返します。

top = some_widget.winfo_toplevel() 
+0

これは私が探していたものです!私がそれを逃した方法を知らない。 –

0

私はわからないが、私はトップレベルであなたがウィジェットの親を意味していることだと思う:あなたは

root = tk.Tk() 
frame = tk.Frame(root) 
label = tk.Label(frame, text="text") 

のようなネストされたウィジェットを作成した場合、その後framelabelの親であるとrootですframeの親。

名前に対応する実際のウィジェットを取得するには、その後、nametowidgetメソッドを親の名前を取得するにはwinfo_parentメソッドを使用して、することができ、ウィジェットの親にアクセスするには:

any_widget.nametowidget(any_widget.winfo_parent()) 
+0

実際には、私は、マスターがToplevelであるFrameに詰め込まれたすべてのウィジェットのToplevelを意味しました。あなたが意味することを理解していますが、あなたがどこにいてもあなたのウィジェットが分かれていない毎回レベル。とにかくnametowidgetメソッドに興味があります。 –

関連する問題