我已经搜索过很多关于这个问题的帖子,但似乎都没有满足我的需求。我打算将这个代码实现到一个使用终端的脚本中,所以使用像pygame这样的东西真的很尴尬。我这样做是为了个人使用,因此任何依赖Windows操作系统的解决方案都可以使用。
基本上,我希望Python使变量keyState等于LOW(如果按下/保持键)和HIGH,只要它没有被按下。我尝试过使用mscvrt,但它还没有奏效。我认为这会是世界的,但它并没有:
import msvcrt
keyState = 'HIGH'
while True:
while msvcrt.kbhit():
isPressed = 'LOW'
print(isPressed)
msvcrt.getch()
isPressed = 'HIGH'
print(isPressed)
我知道这很简单,但是我在制作一些非常简单的工作方面遇到了很多麻烦。任何帮助表示赞赏:)
另一个解决方案可以某种方式使keyPressed成为一个布尔变量,只要按下/保持键,它就是真的,这似乎是最优雅的解决方案,但我可以使用任何东西!
谢谢!
答案 0 :(得分:0)
试试这个(未经测试的)
import msvcrt
import time
keystate = 'HIGH'
while True:
if msvcrt.kbhit():
keystate = 'LOW'
msvcrt.getch()
else:
keystate = 'HIGH'
# you may want to put a time.sleep() call here
# to avoid eating up CPU
time.sleep(0.1)
print(keystate)
答案 1 :(得分:0)
如果有人来这里参考,这是我的最终代码,一旦状态改变就会输出HIGH或LOW。确保Windows上的键盘延迟速度设置为最快
import msvcrt
import time
keyState = 'HIGH'
while True:
if msvcrt.kbhit():
if keyState != 'LOW':
keyState = 'LOW'
time.sleep(0.2)
print(keyState)
msvcrt.getch()
else:
if keyState != 'HIGH':
keyState = 'HIGH'
print(keyState)
time.sleep(0.1)