PyQt:keyPressEvent 和 keyReleaseEvent - 按住不去抖动
PyQt: keyPressEvent and keyReleaseEvent - holding press without debounce
我想实现一个 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'
您需要使用isAutoRepeat:
def keyReleaseEvent(self, eventQKeyEvent):
key = eventQKeyEvent.key()
if key == 54 and not eventQKeyEvent.isAutoRepeat():
print('released')
我想实现一个 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'
您需要使用isAutoRepeat:
def keyReleaseEvent(self, eventQKeyEvent):
key = eventQKeyEvent.key()
if key == 54 and not eventQKeyEvent.isAutoRepeat():
print('released')