PythonのGUIライブラリ「Flet」を使ってみた
Python だけでクロスプラットフォームなGUIアプリを作ることが出来るFlet というライブラリを導入してみました。インストールから簡単なアプリを立ち上げるとことまで紹介します。Flet は Flutter をベースにしていてPythonの手軽さもあり小規模なアプリに適しているなと想いました。
今回のOS環境はUbuntu22.04です。Windowsでも試してみたいと想いますが今回はLinux環境下での紹介となります。
Fletのインストール
以下のコマンドでFletをインストールすることがでいます。
$ pip install flet
今回作ったアプリ紹介
今回作ったアプリが以下のものです。あくまで導入編なので簡単なプログラムです。アイコンボタンを押すとテキストが切り替わるようになっています。
ソースコード
ソースコードはこちらです。要所要所にコメント書いているので参考にしてください。
import flet as ft
def main(page: ft.Page):
# windowタイトル
page.title = "Hello World"
# windowサイズ
page.window_width = 600
page.window_height = 400
# windowの位置
page.window_top = 300
page.window_left = 600
# window内のコントロールの縦位置
page.vertical_alignment = ft.MainAxisAlignment.CENTER
# Textコントロール(一般的にはLabelと呼ばれるもの)
text = ft.Text(value="Hello, world!", size=50, color="gray")
# クリックイベント
def plus_click(e):
text.value = "Hello Flet!"
page.update()
# ページにコントロールを追加
page.add(
ft.Row(
[
text,
# アイコンボタン
ft.IconButton(ft.icons.PLAY_CIRCLE_FILL_OUTLINED, icon_size=50, on_click=plus_click),
],
# 横位置をセンターにする
alignment=ft.MainAxisAlignment.CENTER,
)
)
ft.app(target=main)
ちょっと不具合あり(動画)
まだ出始めたフレームワークだからなのかLinux環境下なのかこなれていない感はあるなと想いました。その一例として以下の動画のようにウィンドウサイズが指定したものと異なるサイズになったり、それがVSCode上とコンソール端末譲渡で挙動が異なる点です。おそらくウィンドウサイズの再描画がうまくできていないんじゃないかなと想います。これは今後どうなるかは見届けたいですね。活発に更新されていくのであればいずれ修正されるでしょう。
スポンサーリンク
