################ # the code # ################ import PySimpleGUI as sg # ----------- Create the 3 layouts this Window will display ----------- layout1 = [[sg.Text('This is layout 1 - It is all Checkboxes')], *[[sg.CB(f'Checkbox {i}')] for i in range(5)]] layout2 = [[sg.Text('This is layout 2')], [sg.Input(key='-IN-')], [sg.Input(key='-IN2-')]] layout3 = [[sg.Text('This is layout 3 - It is all Radio Buttons')], *[[sg.R(f'Radio {i}', 1)] for i in range(8)]] # ----------- Create actual layout using Columns and a row of Buttons layout = [[sg.Column(layout1, key='-COL1-'), sg.Column(layout2, visible=False, key='-COL2-'), sg.Column(layout3, visible=False, key='-COL3-')], [sg.Button('Cycle Layout'), sg.Button('1'), sg.Button('2'), sg.Button('3'), sg.Button('Exit')]] window = sg.Window('Swapping the contents of a window', layout) layout = 1 # The currently visible layout while True: event, values = window.read() print(event, values) if event in (None, 'Exit'): break if event == 'Cycle Layout': window[f'-COL{layout}-'].update(visible=False) layout = layout + 1 if layout < 3 else 1 window[f'-COL{layout}-'].update(visible=True) elif event in '123': window[f'-COL{layout}-'].update(visible=False) layout = int(event) window[f'-COL{layout}-'].update(visible=True) window.close()