diff --git a/DemoPrograms/Demo_Multithreaded_Write_Event_Value.py b/DemoPrograms/Demo_Multithreaded_Write_Event_Value.py index 485ae8ee..1ffedfd4 100644 --- a/DemoPrograms/Demo_Multithreaded_Write_Event_Value.py +++ b/DemoPrograms/Demo_Multithreaded_Write_Event_Value.py @@ -1,8 +1,8 @@ import threading import time - import PySimpleGUI as sg + """ Threaded Demo - Uses Window.write_event_value communications @@ -30,8 +30,7 @@ def the_thread(window): i = 0 while True: time.sleep(1) - sg.cprint(f'thread info (in thread) = {threading.current_thread().name}', c='white on purple') - window.write_event_value('-THREAD-', i) + window.write_event_value('-THREAD-', (threading.current_thread().name, i)) # Data sent is a tuple of thread name and counter i += 1 @@ -40,27 +39,27 @@ def main(): The demo will display in the multiline info about the event and values dictionary as it is being returned from window.read() Every time "Start" is clicked a new thread is started - Try clicking "go" to see that the window is active while the thread stuff is happening in the background + Try clicking "Dummy" to see that the window is active while the thread stuff is happening in the background """ - layout = [ [sg.Text('My Window')], - [sg.Multiline(size=(40,20), key='-ML-', autoscroll=True, reroute_stdout=True, write_only=True, reroute_cprint=True)], - [sg.Input(key='-IN-')], - [sg.Button('Go'), sg.B('Start'), sg.Button('Exit')] ] + layout = [ [sg.Text('Output Area - cprint\'s route to here', font='Any 15')], + [sg.Multiline(size=(65,20), key='-ML-', autoscroll=True, reroute_stdout=True, write_only=True, reroute_cprint=True)], + [sg.T('Input so you can see data in your dictionary')], + [sg.Input(key='-IN-', size=(30,1))], + [sg.B('Start A Thread'), sg.B('Dummy'), sg.Button('Exit')] ] window = sg.Window('Window Title', layout) while True: # Event Loop event, values = window.read() sg.cprint(event, values) - sg.cprint(f'thread info = {threading.current_thread().name}') if event == sg.WIN_CLOSED or event == 'Exit': break - if event == 'Start': - thread = threading.Thread(target=the_thread, args=(window,), daemon=True) - thread.start() + if event.startswith('Start'): + threading.Thread(target=the_thread, args=(window,), daemon=True).start() if event == THREAD_EVENT: - sg.cprint(f'Data from the thread = {values[THREAD_EVENT]}', colors='white on red') + sg.cprint(f'Data from the thread ', colors='white on purple', end='') + sg.cprint(f'{values[THREAD_EVENT]}', colors='white on red') window.close()