PyQt 相当于 "keydown" 事件?

PyQt equivalent of "keydown" event?

在 PyQt 中,我可以定义一个 keyPress 和一个 keyRelease 事件,但是,只要按下键,keyPress 事件就会连续触发,而我更喜欢在第一次按下键时触发一次的事件下来。

有这样的内置事件吗?

如果没有,创建一个最简单和正确(即可以同时按下多个键等)的方法是什么?

一种可能是使用 isAutoRepeat() method of QKeyEvent:

from PyQt5.QtWidgets import *

class Widget(QWidget):
    def keyPressEvent(self, event):
        if not event.isAutoRepeat():
            print(event.text())

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())