在PyQt5中,事件处理器经常被重写(也就是用自己的覆盖库自带的)。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we reimplement an
event handler.
Author: Jan Bodnar
Website: zetcode.com
Last edited: August 2017
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Event handler')
self.show()
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这个例子中,我们替换了事件处理器函数keyPressEvent()
。
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
此时如果按下ESC键程序就会退出。
下一节:事件对象是用python来描述一系列的事件自身属性的对象。