方式一
点击按钮触发加载一个新的窗口
import PySimpleGUI as sg
# Define the layout of the main window
layout = [[sg.Button('Open Window')]]
# Create the main window
window = sg.Window('Main Window', layout)
# Event loop to process events and get user input
while True:
event, values = window.read()
print('YUYUI')
if event == sg.WIN_CLOSED:
break
elif event == 'Open Window':
new_layout = [[sg.Output(size=(60, 30), key='-OUTPUT-',visible=False)],
[sg.Button('Log Something'), sg.Button('Exit')]]
new_window = sg.Window('New Window', new_layout,no_titlebar=True,location=(200,200))
while True:
event, values = new_window.read()
new_window['-OUTPUT-'].update(visible=True, append=True)
if event == sg.WIN_CLOSED or event == 'Exit':
new_window.close()
break
# Close the main window
window.close()
方式二:激活一个,另外一个窗口也展示
激活其中一个窗口,当点击按钮有触发事件,将未激活的窗口激活
def ii():
import PySimpleGUI as sg
# Design pattern 2 - First window remains active
layout = [[sg.Text('Window 1'), ],
[sg.Input(do_not_clear=True)],
[sg.Text(size=(15, 1), key='-OUTPUT-')],
[sg.Button('Launch 2'), sg.Button('Exit')]]
win1 = sg.Window('Window 1', layout)
win2_active = False
while True:
ev1, vals1 = win1.read(timeout=100)
win1['-OUTPUT-'].update(vals1[0])
if ev1 == sg.WIN_CLOSED or ev1 == 'Exit':
break
if not win2_active and ev1 == 'Launch 2':
win2_active = True
layout2 = [[sg.Text('Window 2')],
[sg.Button('Exit')]]
win2 = sg.Window('Window 2', layout2)
if win2_active:
ev2, vals2 = win2.read(timeout=100)
if ev2 == sg.WIN_CLOSED or ev2 == 'Exit':
win2_active = False
win2.close()
方式二:激活一个,另外一个窗口不会展示
def jj():
# Design pattern 1 - First window does not remain active
layout = [[sg.Text('Window 1'), ],
[sg.Input(do_not_clear=True)],
[sg.Text(size=(15, 1), key='-OUTPUT-')],
[sg.Button('Launch 2')]]
win1 = sg.Window('Window 1', layout)
win2_active = False
while True:
ev1, vals1 = win1.read(timeout=100)
if ev1 == sg.WIN_CLOSED:
break
win1['-OUTPUT-'].update(vals1[0])
if ev1 == 'Launch 2' and not win2_active:
win2_active = True
win1.Hide()
layout2 = [[sg.Text('Window 2')], # note must create a layout from scratch every time. No reuse
[sg.Button('Exit')]]
win2 = sg.Window('Window 2', layout2)
while True:
ev2, vals2 = win2.read()
if ev2 == sg.WIN_CLOSED or ev2 == 'Exit':
win2.close()
win2_active = False
win1.UnHide()
break