代码之家  ›  专栏  ›  技术社区  ›  Dinoswarleafs

如果按下键,我将如何实现?

  •  0
  • Dinoswarleafs  · 技术社区  · 7 年前

    我已经搜索了很多关于这个问题的帖子,但似乎没有一个能满足我的需要。我打算将这段代码实现到一个使用终端的脚本中,因此使用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)
    

    我知道这很简单,但我很难让像这样简单的东西发挥作用。感谢您的帮助:)

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   Sci Prog    7 年前

    试试这个(未测试)

    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)
    
        2
  •  0
  •   Dinoswarleafs    7 年前

    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)