4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Fletアプリにプログレスバーを付ける

Last updated at Posted at 2023-05-13

はじめに

Flet、すごく便利です。
クロスプラットフォームなアプリを作れるのはもちろんですが、ちょっとしたローカルデスクトップアプリを作るときにも十分実用的です。この記事では、Fletアプリでプログレスバーを実装する方法をかんたんに記載します。

Note

PythonやFletはインストールされている前提となります。
記事内のコードは以下の環境で動作確認しています。

  • Windows 10
  • Ubuntu Desktop 22.04.2 LTS
  • Python 3.10.4

やりたいこと

screen.gif

  • 実行前
    screen0.png

  • 実行中(これ!)
    screen.png

  • 実行後
    screen2.png

超シンプルですね。
ファイルを指定して何らかの処理を実行するだけのアプリです。

上記のスクリーンショット画像では背景色が黒ですが、背景色は実行する環境(OS)のアピアランス設定に依存します。

フローを箇条書するとこんな感じでしょうか。

  • ファイルを指定する
  • [実行] ボタンをクリックする
  • プログレスバーが表示される
  • 処理後に「完了!」と表示され、プログレスバーが非表示となる

コード

import flet as ft
from pathlib import Path
import time


def do_something():
    time.sleep(5)

def main(page):
    dir_path = ft.TextField(label="ファイル", autofocus=True)
    done = ft.Column()
    
    # プログレスバーの設定
    progress = ft.ProgressBar(width=400, color="pink", bgcolor="#eeeeee")

    def btn_click(e):
        # プログレスバーを表示する
        page.add(
            progress
        )
        
        # 何らかの処理
        do_something()
        
        # プログレスバーを非表示にする
        page.remove(progress)
        
        # 完了メッセージ
        done.controls.append(ft.Text(value="完了!"))
        
        page.update()
        dir_path.focus()
        
    page.add(
        dir_path,
        ft.ElevatedButton("実行", on_click=btn_click),
        done,
    )

ft.app(target=main)

コードも超シンプルです。プログレスバーの書式設定も直感的にわかるかなと思います。

実際にはもっとあれこれ処理を書くことになると思いますが、簡易なものであればこのコードの do_something() を書き換えるだけで使いまわしが利きそうです。

これなら、重い処理をするアプリにプログレスバーを実装するのもかんたんですよね。

おわりに

今回はデスクトップアプリとして(不定な)プログレスバーを実装する簡易なサンプルを紹介しました。
これをWebアプリにすることもできるというのがまたすごいところですね。正直、個人的にはもっと何年も前に欲しかったライブラリです。

最初はFletについて、ChatGPT Plusでも色々やってみようと思ったんです。でも全然ダメでした。まだ新しいライブラリなので、Chat GPTには情報がないようです。しれっとFlaskのコードを出してきたりしましたからね。

公式のドキュメントもQiitaの記事も、とてもわかりやすくて助かりました。

参考

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?