PyQt: keyPressEvent and keyReleaseEvent - holding press without debounce

匆匆过客 提交于 2019-12-01 13:21:42

问题


I want implement a QDialog, in which a key is pressed for some time (seconds) and is released afterwards.

I tried doing this with keyPressEvent and keyReleaseEvent functions.

The problem I get is that when a key is pressed the debounce (keyReleaseEvent) occurs very quickly, which is not desired in my case.

Here, is what I do:

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

Output:

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

I would like to get either:

'pressed'
'released'

or:

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

回答1:


You need to use isAutoRepeat:

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


来源:https://stackoverflow.com/questions/46489933/pyqt-keypressevent-and-keyreleaseevent-holding-press-without-debounce

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!