我正面临着我在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!')
无论如何我可以绕过重复的键盘输入,这里有解决方法吗?谢谢!