ネストされたイベントを使用しようとしています。ファイルを参照すると、ファイル名だけが完全なパスから取り除かれると、enable_events が true に設定されたテキスト ボックスにファイル名が転送されるイベントがトリガーされ、別のイベントがトリガーされて関数が呼び出され、pdf の詳細が取得されます。 .
2 つのコメント行を有効にすると、関数が機能して戻り値を転送することがわかりますが、PDF の詳細を取得する関数には時間がかかるため、これら 2 つのイベントを分離しようとしています。
したがって、順序は次のとおりです。
__pdfpath__は、ファイル名を__bookfilename__に転送するイベントをトリガーする特定の参照ファイルの完全なパスを取得します。これは、応答を__pdfdetails__に送信する関数を呼び出す別のイベントをトリガーする必要があります。
PySimpleGUI を sg としてインポート OS のインポート def get_pdf_details(pdfname): return pdfname + '処理されました' レイアウト = [ [sg.InputText('',key='_pdfpath_',enable_events=True),sg.FileBrowse(key='_filepath_')], [sg.Text('',key='_bookfilename_',enable_events=True,size=(40, 1))], [sg.Text('',key='_pdfdetails_', size=(40, 1) )], ] window = sg.Window('', レイアウト) True の間: イベント、値 = window.Read() イベント == '_pdfpath_' の場合: ファイル名 = os.path.basename(値['_pdfpath_']) window.Element('_bookfilename_').Update(ファイル名) #response = get_pdf_details(ファイル名) #window.Element('_pdfdetails_').Update(応答) イベント == '_bookfilename_' の場合: response = get_pdfdetails(value['_bookfilename_']) window.Element('_pdfdetails_').Update(応答)
問題は、どうすれば 2 番目のイベントをトリガーできるかということです。
次のような 2 番目のループを作成するために、2 番目のwindow.Read()を作成してみました。
event2、value2 = window.Read()
しかし、うまくいきませんでした。
何か案は?
ありがとう