欢迎访问宙启技术站
智能推送

PyQt5中如何捕捉和处理键盘按下事件(QEvent.KeyPress())

发布时间:2024-01-16 23:55:18

在PyQt5中,可以通过重写窗口类的keyPressEvent方法来捕捉和处理键盘按下事件。keyPressEvent方法会在按下一个键时自动触发,并接收一个键盘事件对象作为参数。

接下来,我们使用一个简单的例子来演示如何捕捉和处理键盘按下事件。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle('Key Press Event Example')
        
        self.label = QLabel(self)
        self.label.setGeometry(50, 50, 200, 50)
        self.label.setText('Press any key')
        
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Escape:
            self.close()
        else:
            self.label.setText('Key Pressed: ' + str(event.key()))
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

在上面的例子中,我们创建了一个窗口类MyWindow,继承自QMainWindow。在initUI方法中,我们设置窗口的标题,并创建了一个标签用于显示按下的键。

keyPressEvent方法中,我们首先判断按下的键是否是Escape键(代表退出应用)。如果是Escape键,我们调用close方法关闭窗口。否则,我们将按下的键的键码添加到标签的文本中显示出来。

最后,我们创建了一个QApplication对象和一个MyWindow对象,将窗口显示出来,并启动应用的消息循环。

当运行上述代码时,窗口会显示一个标签,上面显示的文本为"Press any key"。当按下任意键时,标签的文本会更新为"Key Pressed: 键码",其中"键码"代表按下的键的键码。

对于其他可以键码,可以通过Qt.Key_键名来判断。常用的一些键名包括:Enter、Backspace、Up、Down、Left、Right等。我们可以使用event.key()方法获取按下的键的键码。详细的键码列表可以参考Qt的文档。