はじめに
以下の「Flet」を軽く試してみた話です。
●Build multi-platform apps in Python | Flet
https://flet.dev/
Flet は Python を使ったマルチプラットフォームアプリ開発が行えるようです。
公式の Introduction の冒頭を見ると、以下の記載がありました。
ざっくり日本語で書くと「Fletは Python で Web、デスクトップ、モバイルアプリを構築できるフレームワークで、Flutter をベースにした Fletコントロールを使用するもの」で、「Flet は Flutterウィジェットの単なるラッパーではなく独自の工夫も加えている」というもののようです。
さっそく公式の「Get Started」を試す
さっそく、公式ページのトップにある「Get Started」ボタンを押した先のページの内容を試します。
●Introduction - Flet
https://docs.flet.dev/
サンプルコード・手順は以下となるようです。
上記の手順では pip を使った手順になっていますが、uv を使って進めてみます。
uv を使って試す
uv を使った以下のコマンド 2つを実行します。
uv init
コマンド実行後に、main.py などが作成されます。続けて、以下のコマンドを実行します。
uv add "flet[all]"
上記のコマンドにより仮想環境が作成されて、その中で flet が使える状態になります。ここで、先ほど作成された main.py を以下の内容に書きかえます。
import flet as ft
def main(page: ft.Page):
page.title = "Flet counter example"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
input = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)
def minus_click(e):
input.value = str(int(input.value) - 1)
def plus_click(e):
input.value = str(int(input.value) + 1)
page.add(
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
ft.IconButton(ft.Icons.REMOVE, on_click=minus_click),
input,
ft.IconButton(ft.Icons.ADD, on_click=plus_click),
],
)
)
ft.run(main)
デスクトップアプリを試す
最後に、以下のコマンドを実行することでデスクトップアプリを起動できます。
uv run main.py
上記のコマンドは、以下とすることでホットリロードが有効になったりするようです(開発時は以下を使うほうが良さそうです)。
uv run flet run main.py
自分は Mac で試していたのですが、上記のそれぞれのコマンド実行後には、以下のデスクトップアプリが立ち上がりました。
Webアプリを試す
Webアプリのほうも試してみます。
uv run flet run --web main.py
以下は、ブラウザで表示された Webアプリと、その手前に置いたターミナルの画面です。
ブラウザでも、先ほどのデスクトップアプリと同じものが実行できました。
スマホでのテスト
スマホアプリとして動かす場合、スマホにネイティブアプリとしてインストールするのはひと手間かかりそうですが、テスト用にはそれよりも簡単に動かせる方法があるようでした。
具体的には以下になるのですが、別途試せればと思います。
●Testing Flet app on iOS | Flet
https://flet.dev/docs/getting-started/testing-on-ios/
●Testing Flet app on Android | Flet
https://flet.dev/docs/getting-started/testing-on-android/







