在 Qt 中有非常多好用的信号槽函数,这些都是默认的,事实上我们完全可以在 PyQt 中重新实现这些信号槽的过程。本文由 Cescfangs 译自 ZetCode pyqt5系列教程 并作适当修改
在这次的学习笔记中,我们将重构按下 Esc 键时触发的行为,先上源代码:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget
class exp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 400, 400)
self.setWindowTitle('Escape')
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
elif e.key() == Qt.Key_Alt:
self.setWindowTitle('Alt')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = exp()
ex.show()
sys.exit(app.exec_())
以上的代码实现的功能是按下Esc键的时候退出程序,按下Alt的时候将程序标题设置为Alt。
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
elif e.key() == Qt.Key_Alt:
self.setWindowTitle('Alt')
重新定义了 keyPressEvent()
这个函数,当按下 Esc 时,退出这个程序,按下 Alt 时将窗口的标题改为 'Alt'。