Python Tkinterで一定時間後にウィジェットを非表示にする方法
Tkinterは、PythonでGUIアプリケーションを開発するための標準ライブラリです。このライブラリを使えば、ゲームやツールなど、さまざまなGUIアプリケーションを作成できます。Tkinterでは、ウィジェットと呼ばれる部品を組み合わせて画面を構築します。
アプリ開発では、「ウィジェットを一時的に非表示にしたい」という要件が発生することがあります。これを実現するには、pack_forget()メソッドを使用します。重要なポイントは、ウィジェットを配置したときに使用したメソッド(pack()、grid()、place())に対応したメソッドで非表示にする必要があるという点です。
pack()で配置 →pack_forget()で非表示grid()で配置 →grid_forget()で非表示place()で配置 →place_forget()で非表示
サンプルコード
以下の例では、Canvasウィジェット上に画像を表示し、3秒後に自動的に非表示にしています。
# 必要なライブラリをインポート
from tkinter import *
from PIL import Image, ImageTk
# tkinterのフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
# Canvasウィジェットを作成
canvas = Canvas(win, width=400, height=300)
canvas.pack()
# Canvasウィジェットに画像を追加
img = ImageTk.PhotoImage(file="baseball.png")
canvas.create_image(100, 150, image=img)
# 一定時間(3000ミリ秒=3秒)後に画像を非表示にする
canvas.after(3000, canvas.pack_forget)
win.mainloop()実行結果
このコードを実行すると、まずCanvasウィジェット内に画像が表示されます。その後、約3秒が経過すると、画像は自動的に画面から消えます。

ポイント解説
ここで使われているafter()メソッドは、指定したミリ秒後に関数やメソッドを実行するためのものです。第1引数に待機時間(ミリ秒)、第2引数に実行したい処理を渡します。この仕組みを利用することで、タイマーによる遅延処理を簡単に実装できます。
また、一度pack_forget()で非表示にしたウィジェットも、再びpack()を呼び出せば再度表示できるため、表示・非表示を切り替えるUIの実装にも活用できます。
-
Python Tkinterでプログレスバーを作成する方法をわかりやすく解説
プログレスバーとはプログレスバーは、処理やタスクの進行状況を視覚的に表示するための、GUIアプリケーションにおける一般的な要素です。ファイルのダウンロードやデータ処理など、時間のかかる作業の進み具合をユーザーに伝えることで、アプリケーションの使いやすさを大きく向上させます。tkinterでプログレスバーを作成するこの記事では、Python標準のGUIライブラリ「tkinter」を使ってプログレスバーを作成する方法を解説します。以下のサンプルプログラムでは、tkinter.ttkモジュールからProgressbarウィジェットをインポートして使用しています。また、ttk.Styleクラスのオブジ
-
Python Tkinterのafter()メソッドの使い方を徹底解説
Tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリです。ウィンドウやボタン、ラベルなどのウィジェットを作成・操作するための組み込みメソッドが多数用意されており、データの表示やGUIイベントの処理を簡単に実装できます。本記事では、その中でも特に便利なafter()メソッドの使い方について、具体的なコード例とともに詳しく解説します。after()メソッドの基本構文.after(delay, FuncName=FuncName)このメソッドは、指定した遅延時間(ミリ秒単位)が経過した後に、引数として渡した関数FuncNameを呼び出します。タイマー処理や定期的な更新