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_())
在 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_())