TkinterのテキストボックスでAPIレスポンスを取得・表示する方法
APIは、アプリケーションにサービスや機能を実装する際に非常に便利な仕組みです。APIはサーバーとクライアント間の接続を確立する役割を担っており、クライアントがAPIメソッドを使ってリクエストを送信すると、サーバーはステータスコード(成功時は201など)を返します。
APIへのリクエストは、GET、POST、PUT、DELETEなどのHTTPメソッドを使って行えます。公開されているAPI(例:Cat Facts API)にリクエストを送りたい場合は、Pythonのrequestsモジュールを利用すると簡単です。
この記事では、Cat Facts APIから取得したレスポンス(テキスト)をテキストボックスに表示するTkinterアプリケーションの作成方法を解説します。なお、あらかじめ環境にrequestsモジュールがインストールされている必要があります。まだの場合は、以下のコマンドでインストールしてください。
pip install requests
アプリケーションの作成手順
requestsモジュールのインストールが完了したら、以下の手順に従ってアプリケーションを作成します。
必要なライブラリをすべてインポートします。
サーバーから取得したレスポンス(GETリクエストの結果)を表示するためのテキストウィジェットを作成します。
APIのURLを格納する変数(var)を定義します。
APIを呼び出してJSONレスポンスを取得し、レスポンスボディから"fact"属性を抽出する関数を定義します。
既存の内容を削除して新しい事実を挿入することで、テキストウィジェットを最新のレスポンスで更新します。
ランダムな猫の豆知識を次々と読み込めるよう、「Next」ボタンと「Exit」ボタンを作成します。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
import requests
import json
# tkinterフレームのインスタンスを作成
win = Tk()
win.geometry("700x350")
win.title("Cat Fact API ")
# レスポンスボディを表示するテキストボックスを作成
text = Text(win, height=10, width=50, wrap="word")
text.config(font="Arial, 12")
# ラベルウィジェットを作成
label = Label(win, text="Cat Facts")
label.config(font="Calibri, 14")
# APIのURLを設定
api_url = "https://catfact.ninja/fact"
# レスポンスを取得し、JSONからfact属性を取り出す関数
def get_zen():
response = requests.get(api_url).text
response_info = json.loads(response)
Fact = response_info["fact"]
text.delete('1.0', END)
text.insert(END, Fact)
# NextボタンとExitボタンを作成
b1 = Button(win, text="Next", command=get_zen)
b2 = Button(win, text="Exit", command=win.destroy)
label.pack()
text.pack()
b1.pack()
b2.pack()
get_zen()
win.mainloop()
実行結果
プログラムを実行すると、起動時に最初の猫の豆知識がテキストボックスに表示されます。「Next」ボタンをクリックするたびに、APIから新しいランダムな豆知識が取得され、テキストボックスの内容が更新されます。また、「Exit」ボタンを押せば、いつでもアプリケーションウィンドウを終了できます。

このように、requestsモジュールとTkinterのテキストウィジェットを組み合わせることで、外部APIからデータを取得してリアルタイムに画面へ反映させるデスクトップアプリケーションを簡単に構築できます。天気情報やニュースなど、他のJSON形式のAPIにも同じ手法を応用できるので、ぜひ試してみてください。
-
【Python】Tkinterでテキストボックス(テキストウィジェット)の内容を削除する方法
Tkinterには、ボタン、ダイアログボックス、各種ウィジェットなど、本格的なGUIアプリケーションを構築するための豊富な関数やモジュールが用意されています。複数行のテキストを扱えるテキストウィジェットを作成するには、Textウィジェットを使用します。これはコンストラクタとして機能し、親となるウィンドウやフレームを指定して呼び出します。作成したテキストウィジェットの内容を削除するには、組み込みメソッドdelete(first, last=None)を使います。このメソッドは、削除対象となる範囲(開始位置と終了位置)を引数として受け取ります。この記事では、クリックするとテキストボックス内の内容を
-
TkinterのEntryウィジェットにプレースホルダーを追加する方法
Tkinterは、ボタン、テキスト、エントリ(Entry)、ダイアログなどのウィジェットを提供しており、これらを組み合わせることでGUIアプリケーションを効率的に開発できます。しかし、TkinterのEntryウィジェットには、標準ではプレースホルダーの機能が用意されていません。 プレースホルダーとは、入力欄にあらかじめ表示される仮のテキストのことで、「ここに何を入力すればよいか」をユーザーに伝える重要な役割を果たします。 本記事では、insert(挿入位置, テキスト) 関数を使って、Entryウィジェットにプレースホルダーを追加する方法を解説します。この関数は、第1引数に挿入位置(先頭なら