I just want that if someone tries to close the GUI window using close button instead of clicking “OK”, the window reappears… In simple words, they cannot close this one or access any other window without clicking “OK”.
import PySimpleGUI as sg
layout = [[sg.Text("Click OK to start the unlock process using Face Verification")],
[sg.Button("OK")]]
# Create the window
window = sg.Window("Demo", layout)
# Create an event loop
while True:
event, values = window.read()
# End program if user closes window or
# presses the OK button
if event == "OK" or event == sg.WIN_CLOSED:
break
window.close()
Advertisement
Answer
It is defined in source code of PySimpleGUI. You can change it to generate an event “WIN_CLOSE”, like this
import PySimpleGUI as sg
layout = [[sg.Text("Click OK to start the unlock process using Face Verification")], [sg.Button("OK")]]
window = sg.Window("Title", layout, finalize=True)
window.TKroot.protocol("WM_DESTROY_WINDOW", lambda:window.write_event_value("WIN_CLOSE", ()))
window.TKroot.protocol("WM_DELETE_WINDOW", lambda:window.write_event_value("WIN_CLOSE", ()))
while True:
event, values = window.read()
print(event)
if event in ("OK", sg.WIN_CLOSED):
break
elif event == "WIN_CLOSE":
print("Close Button 'X' clicked !")
window.close()
WIN_CLOSE Close Button 'X' clicked ! WIN_CLOSE Close Button 'X' clicked ! WIN_CLOSE Close Button 'X' clicked ! OK