59 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sys
 | |
| if sys.version_info[0] >= 3:
 | |
|     import PySimpleGUIQt as sg
 | |
| else:
 | |
|     import PySimpleGUI27 as sg
 | |
| 
 | |
| """
 | |
|     Demo - Running 2 windows with both being active at the same time
 | |
|     Three important things to note about this design patter:
 | |
|         1. The layout for window 2 is inside of the while loop, just before the call to window2=sg.Window
 | |
|         2. The read calls have timeout values of 100 and 0.  You can change the 100 to whatever interval you wish
 | |
|             but must keep the second window's timeout at 0
 | |
|         3. There is a safeguard to stop from launching multiple copies of window2.  Only 1 window2 is visible at a time
 | |
| """
 | |
| 
 | |
| # Window 1 layout
 | |
| layout = [
 | |
|             [sg.Text('This is the FIRST WINDOW'), sg.Text('      ', key='_OUTPUT_')],
 | |
|             [sg.Text('')],
 | |
|             [sg.Button('Launch 2nd Window'),sg.Button('Popup'), sg.Button('Exit')]
 | |
|          ]
 | |
| 
 | |
| window = sg.Window('Window Title', location=(800,600)).Layout(layout)
 | |
| win2_active = False
 | |
| i=0
 | |
| while True:             # Event Loop
 | |
|     event, values = window.Read(timeout=100)
 | |
|     if event != sg.TIMEOUT_KEY:
 | |
|         print(i, event, values)
 | |
| 
 | |
|     if event is None or event == 'Exit':
 | |
|         break
 | |
|     elif event == 'Popup':
 | |
|         sg.Popup('This is a BLOCKING popup','all windows remain inactive while popup active')
 | |
|     i+=1
 | |
|     if event == 'Launch 2nd Window' and not win2_active:     # only run if not already showing a window2
 | |
|         win2_active = True
 | |
|         # window 2 layout - note - must be "new" every time a window is created
 | |
|         layout2 = [
 | |
|             [sg.Text('The second window'), sg.Text('', key='_OUTPUT_')],
 | |
|             [sg.Input(do_not_clear=True, key='_IN_')],
 | |
|             [sg.Button('Show'), sg.Button('Exit')]
 | |
|                 ]
 | |
|         window2 = sg.Window('Second Window').Layout(layout2)
 | |
|     # Read window 2's events.  Must use timeout of 0
 | |
|     if win2_active:
 | |
|         # print("reading 2")
 | |
|         event, values = window2.Read(timeout=100)
 | |
|         # print("win2 ", event)
 | |
|         if event != sg.TIMEOUT_KEY:
 | |
|             print("win2 ", event)
 | |
|         if event == 'Exit' or event is None:
 | |
|             # print("Closing window 2", event)
 | |
|             win2_active = False
 | |
|             window2.Close()
 | |
|         if event == 'Show':
 | |
|             sg.Popup('You entered ', values['_IN_'])
 | |
| 
 | |
| window.Close() |