FastAPIとtkinterを使用してデスクトップアプリ

emile-perron-xrVDYZRGdw4-unsplash.jpg

質問

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ってこんな感じ使うんですねー


React Electronで作る デスクトップアプリ開発入門【電子書籍】[ 大西武 ]

価格:2901円
(2025/6/10 10:51時点)
感想(0件)


ONE TEAMのスクラム〜日本代表はどう強くなったのか? 増補改訂版『スクラム』〜【電子書籍】[ 松瀬学 ]

価格:1210円
(2025/4/16 00:29時点)
感想(0件)


 



この記事へのコメント