diff --git a/DemoPrograms/Demo_Layout_Extend.py b/DemoPrograms/Demo_Layout_Extend.py index bacbfa62..424150fd 100644 --- a/DemoPrograms/Demo_Layout_Extend.py +++ b/DemoPrograms/Demo_Layout_Extend.py @@ -7,27 +7,39 @@ import PySimpleGUI as sg Note that while you can extend, add to, a layout, you cannot delete items from a layout. Of course you can make them invisible after adding them. - Copyright 2020 PySimpleGUI + When using scrollable Columns be sure and call Column.visibility_changed so that the scrollbars will + be correctly reposititioned + + Copyright 2020, 2022 PySimpleGUI """ layout = [ [sg.Text('My Window')], - [sg.Text('Click to add a row inside the frame'), sg.B('+', key='-B1-')], - [sg.Text('Click to add a row inside the Window'), sg.B('+', key='-B2-')], - [sg.Frame('Frame',[[sg.T('Frame')]], key='-COL1-')], + [sg.Text('Click to add a row inside the Frame'), sg.B('+', key='-ADD FRAME-')], + [sg.Text('Click to add a row inside the Column'), sg.B('+', key='-ADD COL-')], + [sg.Text('Click to add a row inside the Window'), sg.B('+', key='-ADD WIN-')], + [sg.Frame('Frame',[[sg.T('Frame')]], key='-FRAME-')], + [sg.Col([[sg.T('Column')]], scrollable=True, key='-COL-', s=(400,400))], [sg.Input(key='-IN-'), sg.Text(size=(12,1), key='-OUT-')], [sg.Button('Button'), sg.Button('Exit')] ] window = sg.Window('Window Title', layout) + i = 0 + while True: # Event Loop event, values = window.read() print(event, values) if event in (sg.WIN_CLOSED, 'Exit'): break - if event == '-B1-': - window.extend_layout(window['-COL1-'], [[sg.T('A New Input Line'), sg.I(key=f'-IN-{i}-')]]) + if event == '-ADD FRAME-': + window.extend_layout(window['-FRAME-'], [[sg.T('A New Input Line'), sg.I(key=f'-IN-{i}-')]]) i += 1 - if event == '-B2-': + elif event == '-ADD COL-': + window.extend_layout(window['-COL-'], [[sg.T('A New Input Line'), sg.I(key=f'-IN-{i}-')]]) + window.visibility_changed() + window['-COL-'].contents_changed() + i += 1 + elif event == '-ADD WIN-': window.extend_layout(window, [[sg.T('A New Input Line'), sg.I(key=f'-IN-{i}-')]]) i += 1 window.close() \ No newline at end of file