关键重载函数:def closeEvent(self, event)
这要重载了这个函数,就可以实现关闭的事件处理情况
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()
我们把这个函数加到之前的那个类当中,就有了下面的效果了
注意到那No被设置了默认聚焦,这是在那个QmessageBox中重载实现的
def question(self, QWidget, p_str, p_str_1, buttons,QMessageBox_StandardButtons=None,QMessageBox_StandardButton=None, *args, **kwargs):
这是那个函数的动态函数原型。
QWidget:父组件
p_str:标题
p_str_1:具体信息
buttons:选择的button
最后一个就是默认聚焦的button
具体代码在下面:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessageBox
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.setUI()
def setUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.resize(500, 150)
self.move(100, 100)
self.setWindowIcon(QIcon('./Title.ico'))
self.setWindowTitle("Hello world")
self.setToolTip("<b>this is widget</b>")
btn = QPushButton("quit Button", self) # self类似于C++ this指针
btn.setToolTip("This is a button will quit itself")
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.move(0, 0)
self.show()
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)
ex = Example()
sys.exit(app.exec_())