実現したいこと
現在Pythonのfletを使ってGUIのプログラムを作っています。
その中でファイルダイアログを開いて新規ファイルを指定しようと思っています。
発生している問題・分からないこと
ファイルを読み込むためのダイアログはFilePickerで問題なく動いています。
しかし、新規ファイルを作るためにFilePickerを使おうとすると「ファイルが見つかりません。ファイル名を確認して再実行してください」と表示されファイルを作ることができません。
そこで質問なのですが、FilePickerは新規ファイルを作成するために使うことができるのでしょうか?
(もしあるのならば設定方法を教えていただきたいです。)
もしも、できないのであればほかに代替策はあるでしょうか?
既存のファイルを読み込んで処理をしたのち、新規ファイルに書き込みをしたいので出来ればFilePickerを使いたいと思います。
(もしくはFilePickerと同じデザインのダイアログを利用したいと思います。)
よろしくお願いいたします。
該当のソースコード
Python
1import flet as ft 2 3import whisper 4 5 6def main(page: ft.Page): 7 # ページ情報の設定 8 page.title = 'OpenAI 文字起こし' 9 page.window.width = 600 10 page.window.height = 400 11 page.theme = ft.Theme(color_scheme_seed='green') 12 13 def pick_files_result1(e: ft.FilePickerResultEvent): 14 if e.files: 15 # 読み込み用ファイルパスを設定 16 file_path_input.value = e.files[0].path 17 else: 18 pass 19 file_path_input.update() 20 21 def pick_files_result2(e: ft.FilePickerResultEvent): 22 if e.files: 23 # 書き込み用ファイルパスを設定 24 file_path_output.value = e.files[0].path 25 else: 26 pass 27 file_path_output.update() 28 29 # FilePickerの作成 30 pick_files_dialog1 = ft.FilePicker(on_result=pick_files_result1) 31 pick_files_dialog2 = ft.FilePicker(on_result=pick_files_result2) 32 33 page.overlay.append(pick_files_dialog1) 34 page.overlay.append(pick_files_dialog2) 35 36 # 翻訳ボタン 37 def translation_btn_clicked(e: ft.ElevatedButton): 38 ''' 39 音声ファイルからテキストファイルに翻訳する 40 ''' 41 translation_btn.disabled = True 42 page.update() 43 model = whisper.load_model("tiny") 44 result = model.transcribe(file_path_input.value) 45 f = open(file_path_output.value, 'w') 46 f.write(result["text"]) 47 f.close() 48 translation_btn.disabled = False 49 page.update() 50 51 # 入出力ファイル 52 file_path_input = ft.TextField(hint_text='音声ファイル名', read_only=True) 53 file_path_output = ft.TextField(hint_text='テキストファイル名', read_only=True) 54 file_path_input_btn = ft.ElevatedButton( 55 '音声ファイルを指定', 56 icon=ft.icons.UPLOAD_FILE, 57 on_click=lambda _: pick_files_dialog1.pick_files( 58 allow_multiple=False, 59 file_type=ft.FilePickerFileType.CUSTOM, allowed_extensions=['mp3'] 60 ) 61 ) 62 63 file_path_output_btn = ft.ElevatedButton( 64 'テキストファイルを指定', 65 icon=ft.icons.FILE_DOWNLOAD, 66 on_click=lambda _: pick_files_dialog2.pick_files( 67 allow_multiple=False, 68 file_type=ft.FilePickerFileType.CUSTOM, allowed_extensions=['txt'] 69 ) 70 ) 71 72 translation_btn = ft.ElevatedButton( 73 '変換開始', 74 icon=ft.icons.TRANSLATE, 75 visible=True, 76 on_click=translation_btn_clicked 77 ) 78 79 page.add( 80 ft.Column( 81 [ 82 ft.Row([file_path_input, file_path_input_btn]), 83 ft.Row([file_path_output, file_path_output_btn]), 84 translation_btn, 85 ] 86 ) 87 ) 88 89 90ft.app(target=main) 91
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Googleで調べましたがfletのFilePickerを使って既存のファイルを開くサンプルは見つかりましたが、新規にファイルを作成するサンプルは見つかりませんでした。
tkinterを使ってファイルダイアログを開く方法は見つかりましたが、こちらで新規ファイルを作成するためのダイアログが開けるかは検証していません。(fletのFilePickerとデザインが同じかまだ調べていません。)
補足
新規ファイルをあらかじめ作っておいてそれを選択し、上書きすることは可能でした。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/09/27 06:11