Я новичок в PyQT.Я переношу одно из своих приложений из tkinter в PyQT.Мне нужен следующий сценарий: когда пользователь нажимает кнопку X, появляется окно сообщения с вопросом, уверен ли пользователь в закрытии, пока главный экран все еще открыт.Тем не менее, в моем коде, когда кнопка X нажата, главный экран сначала исчезает, и появляется окно сообщения.Как я могу решить эту «проблему заказа» - как я звоню?Мой код ниже:
(В tkinter это было легко с кодом root.protocol("WM_DELETE_WINDOW", on_closing)
и функцией on_closing, содержащей команду messagebox.askokcancel("Quit", "Do you want to quit Chit-Chat?")
. Однако я не мог понять это в PyQT.)
app = QApplication(sys.argv)
v_box = QVBoxLayout()
window = QWidget()
label = QLabel("Hello World")
v_box.addWidget(label)
def closeEvent():
msg_box = QMessageBox()
choice = QMessageBox.question(msg_box, "Quit", "Do you want to quit chit chat?", QMessageBox.Yes | QMessageBox.No)
if choice == QMessageBox.Yes:
print("The program was shut down.")
sys.exit()
else:
pass
app.aboutToQuit.connect(closeEvent)
window.setLayout(v_box)
window.show()
sys.exit(app.exec())