PyQt keyReleaseEvent,当按住键时如何忽略来自OS的键重复?

时间:2017-02-05 07:40:17

标签: python user-interface pyqt action user-input

我正面临着我在PyQt5中处理事件的方式当前的问题。我希望我的GUI在用户按下某个键时启动一个动作,并在用户释放该键时停止。

但是目前,由于大多数操作系统中的重复键功能,我想要的操作会快速启动和停止。禁用此功能对我来说不是一个选项,因为我无法控制我的软件用户有哪些键盘设置。

例如,在下面的代码中,如果我按住“C”键5秒钟,我希望这是输出:

Started Cool action!
Stopped Cool action!

但相反,我明白了:

Started Cool action!
Stopped Cool action!
Started Cool action!
Stopped Cool action!
Started Cool action!
Stopped Cool action!
Started Cool action!
...

有问题的代码:

def keyReleaseEvent(self, e):
    if e.key() == Qt.Key_C:
        #stop doing cool action
        print ('Stopped Cool action!')
def keyPressEvent(self, e):
    if e.key() == Qt.Key_C:
        #Start doing Cool Action
        print ('Started Cool action!')

无论如何我可以绕过重复的键盘输入,这里有解决方法吗?谢谢!

0 个答案:

没有答案