PyQt:keyPressEvent和keyReleaseEvent - 保持按下而不去抖动

时间:2017-09-29 13:32:54

标签: qt pyqt pyside

我希望实现一个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'

1 个答案:

答案 0 :(得分:1)

您需要使用isAutoRepeat

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