質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

956閲覧

Python3 Tkinter どのフレームが今一番上にあるか

person

総合スコア223

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2022/06/22 23:48

tkinterでframeが重なっている時、
今どのフレームが一番上にいるか、
またはどういう順番でウィジェットが重なっているか知る方法はありますか?

frameをtkraise()する際は、今はフラグなど別の変数等から情報得てますが、
他に方法あれば教えてください。

フラグでtkraise()するフレーム変えるサンプル

Python

1import tkinter as tk 2 3def on_button(): 4 global flag 5 6 if flag == 1: 7 flag = 2 8 frame2.tkraise() 9 elif flag == 2: 10 flag = 1 11 frame1.tkraise() 12 13 14root = tk.Tk() 15root.geometry("300x300") 16 17root.rowconfigure(0, weight=1) 18root.columnconfigure(0, weight=1) 19 20frame1 = tk.Frame(root, bg="red") 21frame1.grid(row=0, column=0, sticky="nsew") 22 23frame2 = tk.Frame(root, bg="blue") 24frame2.grid(row=0, column=0, sticky="nsew") 25 26flag = 1 27frame1.tkraise() 28 29button = tk.Button(root, text="Button", command=on_button) 30button.grid(row=1, column=0) 31 32root.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Tkinter 8.5 reference: a GUI for Python - 26. Universal widget methods

w.winfo_children()
Returns a list of all w's children, in their stacking order from lowest (bottom) to highest (top).

なので、以下のようなコードで順番(とクラス名)が確認できます。
リストは背面→前面の順に並んでいます。

Python

1def on_button(): 2 # 略 3 print(f'flag={flag}') 4 for child in root.winfo_children(): 5 print(child, child.winfo_class())

投稿2022/06/23 02:11

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問