pyqt5 窗口关闭事件
时间: 2023-09-04 11:06:47 浏览: 68
在 PyQt5 中,可以通过重写 QWidget 类的 closeEvent() 方法来捕捉窗口关闭事件。closeEvent() 方法会在窗口被关闭之前被调用,我们可以在这个方法中添加我们想要执行的代码。
下面是一个简单的例子,演示如何重写 closeEvent() 方法来捕捉窗口关闭事件并执行一些操作:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('MyWidget')
# 设置窗口关闭事件处理方法
self.closeEvent = self.onClose
def onClose(self, event):
# 弹出确认对话框
reply = QMessageBox.question(self, '提示', '确定要关闭窗口吗?', 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_())
```
在这个例子中,我们重写了 MyWidget 类的 closeEvent() 方法,并在其中弹出了一个确认对话框。如果用户点击了“是”按钮,则关闭窗口,否则忽略关闭事件。