PyQt:keyPressEvent 和 keyReleaseEvent - 按住不去抖动

PyQt: keyPressEvent and keyReleaseEvent - holding press without debounce

我想实现一个 QDialog,其中一个键被按下一段时间(几秒)然后松开。

我试着用 keyPressEventkeyReleaseEvent 函数来做这个。

我遇到的问题是,当按下某个键时,去抖动 (keyReleaseEvent) 发生得非常快,这在我的情况下是不需要的。

这是我的工作:

def keyPressEvent(self, eventQKeyEvent):
    key = eventQKeyEvent.key()
    if key == 54:
    print('pressed')  # 6


def keyReleaseEvent(self, eventQKeyEvent):
    key = eventQKeyEvent.key()
    if key == 54:
    print('released')  # 6

输出:

'pressed'
'released'
'pressed'
'released'
'pressed'
'released'
...
'pressed'
'released'

我想得到:

'pressed'
'released'

或:

'pressed'
'pressed'
'pressed'
...
'pressed'
'pressed'
'released'

您需要使用isAutoRepeat:

def keyReleaseEvent(self, eventQKeyEvent):
    key = eventQKeyEvent.key()
    if key == 54 and not eventQKeyEvent.isAutoRepeat():
        print('released')