PyQt - 事件绑定(当 QCloseEvent 发生时调用一个函数) - 程序风格
PyQt - Event Binding (calling a function when the QCloseEvent occurs) - Procedural Style
我知道如何以 OOP 风格完成此操作,但我有兴趣通过了解如何以面向对象和过程的方式对 GUI 工具包进行编程来充分理解 PyQt。
我的问题是如何将应用程序关闭事件(单击应用程序交叉)绑定到下面代码中的函数?应用退出时如何调用?
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_())
谢谢你的时间。
您可以覆盖现有的 closeEvent
小部件:
w.closeEvent = closeEvent
这将适用于您的示例。
如果你想要一个绑定方法,你可以这样做:
import types
...
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
...
w.closeEvent = types.MethodType(closeEvent, w)
我知道如何以 OOP 风格完成此操作,但我有兴趣通过了解如何以面向对象和过程的方式对 GUI 工具包进行编程来充分理解 PyQt。
我的问题是如何将应用程序关闭事件(单击应用程序交叉)绑定到下面代码中的函数?应用退出时如何调用?
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_())
谢谢你的时间。
您可以覆盖现有的 closeEvent
小部件:
w.closeEvent = closeEvent
这将适用于您的示例。
如果你想要一个绑定方法,你可以这样做:
import types
...
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
...
w.closeEvent = types.MethodType(closeEvent, w)