実現したいこと
GUIで「実行」ボタンを押す事でtest_func()を実行し、
実行中はGUIに「処理中」と表示させたいのですが
python
1import PySimpleGUI as sg 2import time 3 4 5def test_func(): 6 for i in range(5): 7 time.sleep(3) 8 print(i) 9 10 11layout = [ 12 [sg.Text(key='-SYORI-', size=(100, 5))], 13 [sg.Button('実行', key='-SUBMIT-')], 14] 15 16window = sg.Window('テスト', layout, size=(300, 150)) 17 18while True: 19 event, values = window.read() 20 21 if event == '-SUBMIT-': 22 window['-SYORI-'].update('処理中') 23 test_func() 24 window['-SYORI-'].update('完了') 25 if event == sg.WIN_CLOSED: 26 break 27 28window.close()
このようにすると
test_func()の処理が終わってから
window['-SYORI-'].update('処理中')
と
window['-SYORI-'].update('完了')
が実行されるようで
GUI上では「処理中」の文字が表示されず、
test_func()が終わってから「完了」の文字が表示されます。
この場合はどのようにすれば良いのでしょうか?
試したこと
whileでループしているので
window.read()
で
window['-SYORI-'].update('処理中')
が読み込まれるのだろうと思い
python
1while True: 2 event, values = window.read() 3 4 if event == '-SUBMIT-': 5 window['-SYORI-'].update('処理中') 6 event, values = window.read() 7 test_func() 8 window['-SYORI-'].update('完了') 9 if event == sg.WIN_CLOSED: 10 break 11 12window.close()
このようにしたのですが
こうすると、
GUIで「実行」ボタンを押すと
「処理中」と表示されるのですが
test_func()が実行されません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/28 03:57
2022/10/28 04:25
2022/10/28 04:46 編集
2022/10/28 11:16