PyQt5において、ウィンドウのクローズイベントをどのように処理しますか?
PyQt5でウィンドウの閉じるイベントを処理するには、closeEventメソッドを使用します。このメソッドはウィンドウが閉じられるときに呼び出され、カスタムの閉じる動作を実装するためにこのメソッドをオーバーライドすることができます。
以下是一个简单的示例代码,展示了如何在关闭窗口时弹出一个确认对话框:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
class MyWidget(QWidget):
def __init__(self):
super().__init__()
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message', 'Are you sure to quit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
コードの中で、QWidgetを継承したカスタムウィンドウクラスであるMyWidgetを定義し、closeEventメソッドをオーバーライドしました。このメソッドでは、ユーザーにウィンドウを閉じるかどうかを確認するための確認ダイアログを表示します。ユーザーの選択に応じて、event.accept()を呼び出して閉じるイベントを受け入れるか、event.ignore()を呼び出して閉じるイベントを無視することができます。
closeEventメソッドをオーバーライドすることで、警告メッセージの表示やデータの保存など、さまざまなカスタムクローズ動作を実装できます。