非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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上とコンソール端末譲渡で挙動が異なる点です。おそらくウィンドウサイズの再描画がうまくできていないんじゃないかなと想います。これは今後どうなるかは見届けたいですね。活発に更新されていくのであればいずれ修正されるでしょう。

 

スポンサーリンク

 - Python