PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹 [英] PyQt: keyPressEvent and keyReleaseEvent - holding press without debounce
本文介绍了PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想要实现一个 QDialog
,其中一个键被按下一段时间(秒)然后被释放.
I want implement a QDialog
, in which a key is pressed for some time (seconds) and is released afterwards.
我尝试使用 keyPressEvent
和 keyReleaseEvent
函数来做到这一点.
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屋!
查看全文