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

PyQt5中根据按下键的不同执行不同操作(QEvent.KeyPress())

发布时间:2024-01-17 00:00:18

在PyQt5中,可以通过重写QEvent.KeyPress()函数,根据按下的键的不同执行不同的操作。下面是一个使用例子,该例子根据按下的键的不同在应用程序窗口中显示不同的消息。

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtCore import Qt, QEvent

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)
        self.setCentralWidget(self.label)

    def event(self, event):
        if event.type() == QEvent.KeyPress:
            key = event.key()

            if key == Qt.Key_Up:
                self.label.setText("Up key is pressed")
            elif key == Qt.Key_Down:
                self.label.setText("Down key is pressed")
            elif key == Qt.Key_Left:
                self.label.setText("Left key is pressed")
            elif key == Qt.Key_Right:
                self.label.setText("Right key is pressed")
            else:
                self.label.setText("Unknown key is pressed")

        return super().event(event)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在这个例子中,我们创建了一个继承自QMainWindow的MainWindow类。在MainWindow类的构造函数中,我们创建了一个QLabel并将其设置为窗口的中心小部件。

然后,我们重写了MainWindow的event()函数,该函数会监听所有的事件。在事件处理函数中,我们首先检查事件的类型是否为QEvent.KeyPress。如果是按键事件,我们获取按下的键的代码。

然后,我们使用if-elif语句根据按下的键的代码执行不同的操作。如果按下的是上箭头键,我们在标签中显示"Up key is pressed";如果按下的是下箭头键,我们在标签中显示"Down key is pressed";以此类推。如果按下的是其他键,我们在标签中显示"Unknown key is pressed"。

最后,我们调用super().event(event)将事件传递给基类事件处理函数,保证其他类型的事件也能被处理。

运行这个程序,你可以按下不同的键看到对应的消息显示在窗口中央的标签中。这个例子演示了如何根据按下的键的不同执行不同的操作。你可以根据自己的需求进行修改和扩展。