Tkinterで子ウィンドウを作成し、親ウィンドウとデータを受け渡す方法
Pythonの標準GUIライブラリであるTkinterは、本格的なデスクトップアプリケーションを構築するための豊富な機能を備えています。複数ウィンドウの操作やスレッド処理にも対応しており、柔軟なアプリ開発が可能です。
本記事では、親ウィンドウ(メインウィンドウ)からデータを取得し、子ウィンドウに表示するアプリケーションの作成方法を解説します。子ウィンドウの概念は、イベント発生時にユーザーへ情報を提示する「ダイアログボックス」と捉えることができます。TkinterではToplevel(root)コンストラクタを使用することで、子ウィンドウを非常に簡単に作成できます。
サンプルコード
以下の例では、メインウィンドウにエントリー(テキスト入力)ウィジェットとボタンを配置します。エントリーウィジェットに入力された値は、ボタンのクリックによって取得され、新しく開かれた子ウィンドウ内に表示されます。また、open_win() 関数内で win.withdraw() を呼び出すことで、子ウィンドウを表示している間は親ウィンドウが一時的に非表示になります。
# tkinterライブラリをインポート
from tkinter import *
from tkinter import ttk
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win= Tk()
# ウィンドウのサイズを設定
win.geometry("750x250")
win.title("Main Window")
# 新しいウィンドウを開く関数を定義
def open_win():
child_win= Toplevel(win)
child_win.title("Child Window")
child_win.geometry("750x250")
content= entry.get()
Label(child_win, text=content, font=('Bell MT', 20, 'bold')).pack()
win.withdraw()
# エントリーウィジェットを作成
entry=ttk.Entry(win, width= 40)
entry.pack(ipady=4,pady=20)
# メインウィンドウにボタンを作成
button= ttk.Button(win, text="OK",command=open_win)
button.pack(pady=20)
win.mainloop()実行結果
上記のコードを実行すると、エントリーウィジェットと、新しいウィンドウを開くための「OK」ボタンが配置されたウィンドウが表示されます。

エントリーウィジェットに任意のテキストを入力し、「OK」ボタンをクリックしてみましょう。

すると、入力した内容が子ウィンドウ側に大きく表示され、同時に親ウィンドウが非表示になります。このようにToplevelウィジェットを活用すれば、設定画面や確認ダイアログなど、用途に応じて複数のウィンドウを持つアプリケーションを手軽に実装できます。
-
Tkinterでスプラッシュ画面を作成する方法をわかりやすく解説
アプリケーションを起動した際に一瞬だけ表示される「スプラッシュ画面」。ロゴや読み込み中表示などを映し出すことで、アプリに洗練された印象を与えられます。Pythonの標準GUIライブラリであるTkinterを使えば、このスプラッシュ画面も簡単に実装できます。スプラッシュ画面作成の基本手順Tkinterでスプラッシュ画面を作成するには、以下の手順に従います。ラベルなどを配置したスプラッシュ画面を作成するoverrideredirectメソッドを使って、スプラッシュ画面を枠なし(ボーダーレス)にするスプラッシュ画面の直後に表示されるメインウィンドウを生成する関数を定義するafterメソッドを使って、
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo