Хороший вопрос. В официальной документации эта тема не раскрыта. 
Гугл выдает этот вопрос, значит, надо самому разбираться)
Вариант с использованием атрибутов функций:
import PySimpleGUI as sg
def create_second_window():
    slider = sg.Slider(range=(100, 1200), default_value=500, expand_x=True, enable_events=True, orientation='horizontal', key='-slider-')
    
    buttons = (sg.Button('OK'),)
    
    layout=[[slider], [buttons]]
    
    return sg.Window('Generate blocks', layout, finalize=True, keep_on_top=True)
def second_win_dialog():
    try:
        event, values = second_win_dialog.window.read(timeout=10)
        if event == sg.WINDOW_CLOSED:
            second_win_dialog.window.close()
            second_win_dialog.__dict__.pop("window")
            
        elif values["-slider-"]:
            window['-value-'].update(value=values["-slider-"])
    except AttributeError:
        pass
    
layout = [
   [sg.Button('dialog')],
   [sg.Input(key='-value-',  s=8)],
]
window = sg.Window('Hello', layout, size=(400, 150))
while True:
    second_win_dialog()
    event, values = window.read(timeout=10)
   
    if event == sg.WIN_CLOSED or event == 'Exit':
       break
  
    elif event == 'dialog':
        try:
            window_is_exist = second_win_dialog.window 
        except AttributeError:
            second_win_dialog.window = create_second_window()
window.close()
PS: 2 года прошло, расскажите, как решили проблему