From f0b590098ef54129ae26ed9383fe846874188a90 Mon Sep 17 00:00:00 2001 From: PySimpleGUI Date: Fri, 7 Aug 2020 07:32:28 -0400 Subject: [PATCH] Added ablity to re-open window 2 if closed. Also made windows use input events so updates are made as soon as characters entered --- ...n_Pattern_Multiple_Windows_Both_Visible.py | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/DemoPrograms/Demo_Design_Pattern_Multiple_Windows_Both_Visible.py b/DemoPrograms/Demo_Design_Pattern_Multiple_Windows_Both_Visible.py index c0f441cb..2b070724 100644 --- a/DemoPrograms/Demo_Design_Pattern_Multiple_Windows_Both_Visible.py +++ b/DemoPrograms/Demo_Design_Pattern_Multiple_Windows_Both_Visible.py @@ -3,6 +3,9 @@ import PySimpleGUI as sg Demo - 2 simultaneous windows using read_all_window Both windows are immediately visible. Each window updates the other. + + There's an added capability to "re-open" window 2 should it be closed. This is done by simply calling the make_win2 function + again when the button is pressed in window 1. Copyright 2020 PySimpleGUI.org """ @@ -10,28 +13,30 @@ import PySimpleGUI as sg def make_win1(): layout = [[sg.Text('Window 1')], [sg.Text('Enter something to output to Window 2')], - [sg.Input(key='-IN-')], + [sg.Input(key='-IN-', enable_events=True)], [sg.Text(size=(25,1), key='-OUTPUT-')], - [sg.Button('Output to Window 2'), sg.Button('Exit')]] + [sg.Button('Reopen')], + [sg.Button('Exit')]] return sg.Window('Window Title', layout, finalize=True) def make_win2(): layout = [[sg.Text('Window 2')], [sg.Text('Enter something to output to Window 1')], - [sg.Input(key='-IN-')], + [sg.Input(key='-IN-', enable_events=True)], [sg.Text(size=(25,1), key='-OUTPUT-')], - [sg.Button('Output to Window 1'), sg.Button('Exit')]] + [sg.Button('Exit')]] return sg.Window('Window Title', layout, finalize=True) def main(): window1, window2 = make_win1(), make_win2() - window2.move(window1.current_location()[0], window1.current_location()[1]+200) + window2.move(window1.current_location()[0], window1.current_location()[1]+220) while True: # Event Loop window, event, values = sg.read_all_windows() + if window == sg.WIN_CLOSED: # if all windows were closed break if event == sg.WIN_CLOSED or event == 'Exit': @@ -40,7 +45,11 @@ def main(): window2 = None elif window == window1: # if closing win 1, exit program window1 = None - elif event.startswith('Output to'): + elif event == 'Reopen': + if not window2: + window2 = make_win2() + window2.move(window1.current_location()[0], window1.current_location()[1] + 220) + elif event == '-IN-': output_window = window2 if window == window1 else window1 if output_window: # if a valid window, then output to it output_window['-OUTPUT-'].update(values['-IN-'])