长按按键不松开也会触发 keyReleaseEvent 事件,是由于操作系统的键盘事件处理机制。大多数操作系统在检测到键盘按键被长按时,会重复生成按键按下 (keyPressEvent
) 和按键释放 (keyReleaseEvent
) 事件。这种行为通常被称为“键盘自动重复”。
通过检测 event.isAutoRepeat(),判断按键是否长按未松开
def keyPressEvent(self, event):
if event.key() == Qt.Key_Up:
self.variable += 0.1
def keyReleaseEvent(self, event):
if not event.isAutoRepeat():
if event.key() == Qt.Key_Up:
self.variable = 0.0 # 松开键后变量归零