1

ネストされたイベントを使用しようとしています。ファイルを参照すると、ファイル名だけが完全なパスから取り除かれると、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()

しかし、うまくいきませんでした。

何か案は?

ありがとう

4

3 に答える 3