isAutoRepeat

у реализоватьQDialog, в котором клавиша нажимается в течение некоторого времени (секунды) и затем отпускается.

Я пытался сделать это сkeyPressEvent а такжеkeyReleaseEvent функции.

Проблема, которую я получаю, заключается в том, что при нажатии клавиши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)

Решение Вопроса

Вам нужно использоватьisAutoRepeat:

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

Ваш ответ на вопрос