仕事でスクリプトを作成した際に、一緒にPythonのFletライブラリでスクリプト実行用の簡単なUIを作ることが多々あります。
以下に、FletでのUI作成にて使用頻度が高いなぁって思った クラス・インスタンス化の例・プロパティ・メソッド をまとめましたので、よかったらご参照ください。
細かい説明(UIの構築、処理部との結合)等はまた別の記事として投稿します。
かといってリストだけ書いてバイバイも味気ないので、Fletの初期設定用レシピコード(Fletを使用する際のおまじない)を最後に記載します。
■ クラス・インスタンス化の一例
クラス | 役割 | インスタンス化の一例 |
---|---|---|
Page | ページ全体(必須) | main(page: ft.Page) |
Container | ボックス要素 | container = ft.Container(content=ft.Image("cute_cat.png")) |
Text | テキストの表示 | text = ft.Text("Bow wow Tool") |
ElevatedButton | 立体的なボタンの作成 | button = ft.ElevatedButton("Click", on_click=func) |
Column | 縦並びに配列 | column = ft.Column([ft.Text("Item")]) |
Row | 横並びに配列 | row = ft.Row([ft.Text("Left")]) |
TextField | 入力欄の作成 | text_field = ft.TextField(label="What's your favorite song?") |
Image | 画像の表示 | image = ft.Image(src="so_cute_dog.png") |
FilePicker | ファイル選択 | file_picker = ft.FilePicker() |
Checkbox | チェックボックス | checkbox = ft.Checkbox(label="Accept drinking party") |
Switch | ON/OFFスイッチ | switch = ft.Switch(value=True) # valueにてデフォルト値の設定 |
Dropdown | ドロップダウンメニュー | dropdown = ft.Dropdown(options=[ft.dropdown.Option("Beer"), # 要カンマ区切りft.dropdown.Option(“Highball“)]) |
■ プロパティの一例
プロパティ | 説明 |
---|---|
content | Containerインスタンス内にて、複数のインスタンス・プロパティを保持する |
src | 画像のURLまたはローカルパスを指定する |
width | 表示の幅(ピクセル単位) |
height | 表示の高さ(ピクセル単位) |
fit | 画像の表示領域にフィットさせる(例: ft.ImageFit.CONTAIN, ft.ImageFit.COVER) |
alignment | 配置を指定する(例: ft.alignment.center) |
bgcolor | 背景色を設定する |
padding | UI内側に余白を設定する(pixel単位) |
scale | 画像の拡大・縮小率 |
visible | 画像を表示・非表示にする(True / False) |
on_click | クリック時のイベントハンドラーを指定(関数をコールする、ファイル選択ポップアップを出す等) |
on_hover | ホバー時(マウスカーソルが指定領域に乗った時)のイベントハンドラーを指定(画像拡大する等) |
■ メソッドの一例
メソッド | 説明 |
---|---|
update() | UIの変更を即時反映(必須) |
add() | PageやColumnに要素を追加 (必須) |
remove() | PageやColumnから要素を削除 |
clean() | 指定した要素を削除 |
insert() | 指定した位置に要素を挿入 |
show() | 要素を表示(visible=Trueと同じ) |
hide() | 要素を非表示(visible=Falseと同じ) |
toggle() | visible(bool)を切り替える(表示・非表示をワンタップで切り替え) |
open_dialog() | ダイアログを開く (ユーザーに処理を実行していいか確認を求めるときなど) |
close_dialog() | 開いているダイアログを閉じる(ユーザーの操作が終わった後など) |
launch_url() | Webページを開く(例:on_click=page.launch_url=”https://wancolab.com/breed/ ”) |
■ Fletの初期設定用レシピコード
python
import flet as ft
class UIName:
def __init__(self, page: ft.Page):
"""Args:
page (ft.Page): Fletのページオブジェクト(UIのルート要素)
JsonImgEditUIクラスのインスタンスの初期化
"""
self.page = page
#--- ここからUIの詳細な設定 ---#
self.page.width = 100
self.page.height = 100
self.example_text = ft.Text("Test")
self.page.add(
ft.Row(
self.example_text)
def main(page: ft.Page): # 実行
UIName(page)
if __name__ == "__main__":
ft.app(target=main)
■ 詳しくは公式ドキュメントで
クラスやメソッド、プロパティについてのより詳細な情報・使用法は公式ドキュメントをご参照ください。
https://flet.dev/docs/
おわり