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

How would I implement if a key is held down?

我已经搜索了很多关于这个问题的主题,但 none 似乎满足了我的需要。我打算将此代码实现到使用终端的脚本中,因此使用 pygame 之类的东西真的很尴尬。我这样做是为了个人使用,所以任何 Windows OS 相关的解决方案都可以使用。

本质上,我希望 Python 使变量 keyState 等于 LOW 如果键是 pressed/held 和 HIGH 只要它没有被按下。我试过使用 mscvrt 但它没有用。我认为这会是世界,但事实并非如此:

import msvcrt

keyState = 'HIGH'

while True:
  while msvcrt.kbhit():
    isPressed = 'LOW'
    print(isPressed)
    msvcrt.getch()
  isPressed = 'HIGH'
  print(isPressed)

我知道这很简单,但是我遇到了很多麻烦才能让像这样非常简单的东西起作用。感谢您的帮助:)

另一种解决方案可以以某种方式使 keyPressed 成为一个布尔变量,只要键是 pressed/held 就为真,这似乎是最优雅的解决方案,但我可以使用任何东西!

谢谢!

试试这个(未测试)

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)

如果有人来这里参考,这是我的最终代码,一旦状态发生变化,就会输出高电平或低电平。确保 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)