如果按下某个键,我将如何实施?

时间:2017-07-18 00:34:18

标签: python msvcrt

我已经搜索过很多关于这个问题的帖子,但似乎都没有满足我的需求。我打算将这个代码实现到一个使用终端的脚本中,所以使用像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成为一个布尔变量,只要按下/保持键,它就是真的,这似乎是最优雅的解决方案,但我可以使用任何东西!

谢谢!

2 个答案:

答案 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)