我知道如何通过OOP风格完成这项工作,但我有兴趣通过了解GUI工具包如何以面向对象和程序方式进行编程来完全理解PyQt。
我的问题是如何将应用程序关闭事件(单击app cross)绑定到下面代码中的函数?如何在退出应用程序时调用它?
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication, QMessageBox)
from PyQt5.QtGui import QFont
def closeEvent(event):
reply = QMessageBox.question(w, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
app = QApplication(sys.argv)
w = QWidget()
w.setGeometry(300, 300, 300, 200)
w.setWindowTitle('Procedural event binding - PyQt')
w.show()
sys.exit(app.exec_())
感谢您的时间。
答案 0 :(得分:1)
您可以覆盖窗口小部件的现有closeEvent
:
w.closeEvent = closeEvent
这将适用于您的示例。
如果你想要一个绑定方法,你可以这样做:
import types
...
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
...
w.closeEvent = types.MethodType(closeEvent, w)