こちらにあるサンプルは複数選択を行うFilePickerです。
FilePicker | Flet
データを保存する機能を付けたいので、ファイル保存ダイアログとして
変更しました。
# python using-flet import flet as ft def main(page: ft.Page): def save_file_result(e: ft.FilePickerResultEvent): if e.path: print(e.path) else: print("Cancel!!!") pick_files_dialog = ft.FilePicker(on_result = save_file_result) page.overlay.append(pick_files_dialog) page.add( ft.TextField( value = "piyo" ), ft.ElevatedButton( "File Picker Test", icon = ft.icons.UPLOAD_FILE, on_click = lambda _: pick_files_dialog.save_file( file_name = "hoge" ), ), ) ft.app(target=main)
実行するとこんな画面です。
"piyo"部分はテキストフィールドで文字が入力出来ますが、
今は無関係です。
"File Picker Test"を押すと、”名前を付けて保存”ダイアログが表示されます。
OSのダイアログを呼び出してくれるようです。
ダイアログのファイル名の欄には"hoge"が入っていますが、
こちらの部分で設定しています。
file_name = "hoge"
これを動的(と言うのかな?)に設定してダイアログを表示させたい
のですが、どうすれば良いのか分からず困っています。
目標は、隣のコントロールに記載されている"piyo"を表示させる事です。
・・・
本当は、お悩み相談+愚痴的なつもりだったのですが、書いているうちに
思い付き解決してしまいました。
page.add( ft.TextField( value = "piyo" ), ft.ElevatedButton( "File Picker Test", icon = ft.icons.UPLOAD_FILE, on_click = lambda e: pick_files_dialog.save_file( # file_name = "hoge" file_name = e.page._controls[0].value ), ), )
もう、本番のコードが超スパゲティになってる・・・。
リファルタリング結構しているんだけどなぁ