実現したいこと
PySimpleGUIを使用し、ファイルを二つ選択し、「読み込み開始」ボタンを押すとファイルの読み込みを開始するGUIを作成しています。
それぞれのファイルが未選択、またはファイル形式外(テキストファイルのみ選択可能な仕様にしています)の場合、エラーメッセージを表示するようにしています。
どちらも正常なファイルが選択された場合、次の処理(ファイルの読み込み等)に進みたいと考えているのですが、現状のコードだとどちらもTrueの場合にエラーとなってしまいます。
ファイル選択時ではなく、ファイルの読み込み等の処理が完了したらcode = '0'で終了したいと考えています。
異常がある場合のみエラーコードと、エラーメッセージを返却するようにしたいです。
filesample.py(GUI画面)
1import PySimpleGUI as sg 2import file_function as ff 3from file_select import FileSelect 4sg.theme('Dark Brown') 5layout = [ 6 [sg.Text('1つ目のファイルのを選択してください'),sg.InputText(key='FILE1', size=(45,1)), sg.FileBrowse('参照', target='FILE1')], 7 [sg.Text('1つ目のファイルのを選択してください'),sg.InputText(key='FILE2', size=(45,1)), sg.FileBrowse('参照', target='FILE2')], 8 [sg.Button('読み込み開始',key=FileSelect.START)], 9 [sg.CloseButton('閉じる')] 10] 11window = sg.Window('ファイル選択サンプル', layout) 12while True: 13 event, values = window.read() 14 if event == sg.WIN_CLOSED: 15 break 16 code, message = ff.file_func(event,values['FILE1'], values['FILE2']) 17 #if code = '0': 18 # sg.popup_ok(message,title='ファイルの読み込み完了' 19 if code == '1': 20 sg.popup_error(message, title='選択エラー') 21window.close()
file_function.py
1import PySimpleGUI as sg 2import os 3from file_select import FileSelect 4def file_func(event, first_file_path,second_file_path): 5 first_file_state = False 6 if first_file_path == '': 7 first_file_message = "1つめが選択されていません。" 8 elif os.path.splitext(first_file_path)[1] != '.txt': 9 first_file_message = "1つめがテキストファイルではありません。" 10 second_file_state = False 11 if second_file_path == '': 12 second_file_message = "2つめが選択されていません。" 13 elif os.path.splitext(second_file_path)[1] != '.txt': 14 second_file_message = "2つめがテキストファイルではありません" 15 if (first_file_state == False) or (second_file_state == False): 16 code = "1" 17 return code, f"{first_file_message}\n{second_file_message}" 18 19#ファイルの読み込みの処理記載予定 20# code = "0"
試したこと
file_functionの15行目if条件の変更で、
どちらもTrueだったら何もしないという意味でpassを入れたり色々試しているのですがうまくいかず・・・アドバイスをいただきたいです。
file_function.py
1if first_file_state and second_file_state: 2 pass 3else: 4 code = "1" 5
回答3件
あなたの回答
tips
プレビュー