Хороший вопрос. В официальной документации эта тема не раскрыта.
Гугл выдает этот вопрос, значит, надо самому разбираться)
Вариант с использованием атрибутов функций:
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 года прошло, расскажите, как решили проблему