#python #popupwindow #pysimplegui
#python #всплывающее окно #pysimplegui
Вопрос:
Я просто хочу, чтобы, если кто-то попытается закрыть окно графического интерфейса с помощью кнопки закрытия вместо нажатия «ОК», окно появится снова… Простыми словами, они не могут закрыть это или получить доступ к любому другому окну, не нажав «ОК».
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()
Ответ №1:
Это определено в исходном коде PySimpleGUI. Вы можете изменить его, чтобы сгенерировать событие «WIN_CLOSE», например
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
Комментарии:
1. 2 января выпущена новая функция, которая позволяет делать это без прямого вызова tkinter . Установите enable_close_attempted_event при создании окна. Событие WINDOW_CLOSE_ATTEMPTED_EVENT будет возвращено из window.read(), если щелкнуть «X» или окно будет уничтожено.