Python
 Computer >> コンピューター >  >> プログラミング >> Python

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秒が経過すると、画像は自動的に画面から消えます。

Python Tkinterで一定時間後にウィジェットを非表示にする方法

ポイント解説

ここで使われているafter()メソッドは、指定したミリ秒後に関数やメソッドを実行するためのものです。第1引数に待機時間(ミリ秒)、第2引数に実行したい処理を渡します。この仕組みを利用することで、タイマーによる遅延処理を簡単に実装できます。

また、一度pack_forget()で非表示にしたウィジェットも、再びpack()を呼び出せば再度表示できるため、表示・非表示を切り替えるUIの実装にも活用できます。

  1. Python Tkinterでプログレスバーを作成する方法をわかりやすく解説

    プログレスバーとはプログレスバーは、処理やタスクの進行状況を視覚的に表示するための、GUIアプリケーションにおける一般的な要素です。ファイルのダウンロードやデータ処理など、時間のかかる作業の進み具合をユーザーに伝えることで、アプリケーションの使いやすさを大きく向上させます。tkinterでプログレスバーを作成するこの記事では、Python標準のGUIライブラリ「tkinter」を使ってプログレスバーを作成する方法を解説します。以下のサンプルプログラムでは、tkinter.ttkモジュールからProgressbarウィジェットをインポートして使用しています。また、ttk.Styleクラスのオブジ

  2. Python Tkinterのafter()メソッドの使い方を徹底解説

    Tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリです。ウィンドウやボタン、ラベルなどのウィジェットを作成・操作するための組み込みメソッドが多数用意されており、データの表示やGUIイベントの処理を簡単に実装できます。本記事では、その中でも特に便利なafter()メソッドの使い方について、具体的なコード例とともに詳しく解説します。after()メソッドの基本構文.after(delay, FuncName=FuncName)このメソッドは、指定した遅延時間(ミリ秒単位)が経過した後に、引数として渡した関数FuncNameを呼び出します。タイマー処理や定期的な更新