PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹 [英] PyQt: keyPressEvent and keyReleaseEvent - holding press without debounce

查看:105
本文介绍了PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要实现一个 QDialog,其中一个键被按下一段时间(秒)然后被释放.

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

我尝试使用 keyPressEventkeyReleaseEvent 函数来做到这一点.

I tried doing this with keyPressEvent and keyReleaseEvent functions.

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

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

这就是我所做的:

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')

这篇关于PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆