如果按住某个键,我将如何实施?
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)
我已经搜索了很多关于这个问题的主题,但 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)