質問
FastAPIとtkinterを使用してデスクトップアプリを作成する方法 |
解答
FastAPIとTkinterを組み合わせてデスクトップアプリを作るには、**FastAPIをバックエンド(APIサーバ)**として使用し、**Tkinterをフロントエンド(GUI)**として動かす形になります。 構成イメージは次のようになります: ✅ 構成の概要 * FastAPI:ローカルサーバでAPIを提供(例:データ処理・保存・取得) * Tkinter:ユーザー入力やボタン操作などGU I * 通信:`requests`ライブラリなどを使って、TkinterからFastAPIへHTTPリクエストを送る ✅ 最小構成サンプル(例:名前を入力→APIで処理→結果を表示) 1. `main.py`:FastAPIサーバ ```python # main.py from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class NameRequest(BaseModel): name: str @app.post("/greet") def greet(data: NameRequest): return {"message": f"Hello, {data.name}!"} ``` 起動コマンド: ```bash uvicorn main:app --reload ``` 2. `gui.py`:Tkinter GUI + API呼び出し ```python # gui.py import tkinter as tk import requests def send_name(): name = entry.get() res = requests.post("http://127.0.0.1:8000/greet", json={"name": name}) if res.ok: result = res.json()["message"] label_result.config(text=result) else: label_result.config(text="Error") root = tk.Tk() root.title("FastAPI + Tkinter App") tk.Label(root, text="Enter your name:").pack() entry = tk.Entry(root) entry.pack() tk.Button(root, text="Send", command=send_name).pack() label_result = tk.Label(root, text="") label_result.pack() root.mainloop() ``` ✅ 実行手順 1. ターミナル①:FastAPIサーバを起動 ```bash uvicorn main:app --reload ``` 2. ターミナル②:Tkinter GUIを起動 ```bash python gui.py ``` ✅ 応用例 * FastAPIでデータベースと連携(例:SQLite, PostgreSQL) * GUIで表やグラフ表示(Tkinterの`Treeview`や`matplotlib`埋め込み) * ファイルアップロード・保存 * TkinterでFastAPIをサブプロセスとして起動(例:`subprocess.Popen()`) ✅ 注意点 * FastAPIは非同期(`async`)ですが、Tkinterは同期的なUIなので、API呼び出しがブロッキングしないよう工夫が必要(例えば`threading`や`asyncio`で非同期化)。 * セキュリティやCORS設定はローカル利用であれば基本不要ですが、Web化する場合は適切に設定する必要があります。 |
tkinterってこんな感じ使うんですねー
|
|

この記事へのコメント