尝试在Python中检测并响应按键。我使用IDLE和Python 3.3。到目前为止我有以下代码
import msvcrt
while True:
inp = ord(msvcrt.getch())
if (inp != 255):
print(inp)
我有IF语句,因为如果我只是允许脚本丢弃' inp'它只是反复敲出255。所以我抛出if语句来响应255以外的任何东西,现在运行时代码什么都不做,只是在shell中输出实际的keypress字符。
答案 0 :(得分:0)
这是因为getch
立即读取输入,它不会等到你输入内容。当它没有收到任何输入时,它只会返回“\ xff”(序数255)。
答案 1 :(得分:0)
getch功能旨在在控制台中工作,而不是在图形程序中工作。
当您在图形程序中使用它时,它将立即返回\ xff。
如果你在reguler python解释器中运行你的程序,它不会导致你的问题。
此外,当您使用if语句运行循环时,它会持续运行并使用更多的处理器时间,然后它需要。在Windows中,这样做的唯一正确方法是使用窗口消息,这听起来像是满足您的需求。
答案 2 :(得分:0)
Python有一个keyboard模块,具有许多功能。您可以在 Shell 和控制台中使用它。它还检测整个Windows的关键 安装它,也许使用此命令:
pip3 install keyboard
然后在代码中使用它:
import keyboard #Using module keyboard
while True: #making a loop
try: #used try so that if user pressed other than the given key error will not be shown
if keyboard.is_pressed('a'): #if key 'a' is pressed
print('You Pressed A Key!')
break #finishing the loop
else:
pass
except:
break #if user pressed other than the given key the loop will break
您可以将其设置为多个密钥检测:
if keyboard.is_pressed('a') or keyboard.is_pressed('b') or keyboard.is_pressed('c'): # and so on
#then do this
安装模块时,转到文件夹:
python36-32/Lib/site-packages/keyboard
在记事本++中打开文件_keyboard_event.py
会有键盘事件
不确定他们是谁。
感谢。