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

2024-05-15 05:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

关于这个问题我已经搜索了很多线索,但似乎没有一个能满足我的需要。我打算把这段代码实现成一个使用终端的脚本,所以使用像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成为布尔变量的解决方案似乎是最优雅的解决方案,但是我可以使用任何东西!在

谢谢!在


Tags: 代码脚本终端windows解决方案pygamelowprint
2条回答

试试这个(未经测试)

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)

相关问题 更多 >

    热门问题