我想要实现 a 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
Run Code Online (Sandbox Code Playgroud)
输出:
'pressed'
'released'
'pressed'
'released'
'pressed'
'released'
...
'pressed'
'released'
Run Code Online (Sandbox Code Playgroud)
我想得到:
'pressed'
'released'
Run Code Online (Sandbox Code Playgroud)
或者:
'pressed'
'pressed'
'pressed'
...
'pressed'
'pressed'
'released'
Run Code Online (Sandbox Code Playgroud)
您需要使用isAutoRepeat:
def keyReleaseEvent(self, eventQKeyEvent):
key = eventQKeyEvent.key()
if key == 54 and not eventQKeyEvent.isAutoRepeat():
print('released')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |