如何使用键输入连续控制Python脚本?
我创建了一个Python脚本,可以从管道(名为pipe1)获取命令。您可以在上找到脚本。如何使用键输入连续控制Python脚本?,python,input,keyboard,raspberry-pi,robotics,Python,Input,Keyboard,Raspberry Pi,Robotics,我创建了一个Python脚本,可以从管道(名为pipe1)获取命令。您可以在上找到脚本。 我用另一个脚本测试了脚本: import sys fw = open("pipe1", "w" ) fw.write('fd\n') fw.close() 它成功了 现在我想用另一个Python脚本来控制脚本,如果我按下w,a,s,d或p并显示我按下的键,它就可以在管道中写入 在这个例子中,我只想打印我按下的键。稍后,我将添加fw.write命令,以便在管道中写入,我之前测试过: def key_in
我用另一个脚本测试了脚本:
import sys
fw = open("pipe1", "w" )
fw.write('fd\n')
fw.close()
它成功了
现在我想用另一个Python脚本来控制脚本,如果我按下w
,a
,s
,d
或p
并显示我按下的键,它就可以在管道中写入
在这个例子中,我只想打印我按下的键。稍后,我将添加fw.write
命令,以便在管道中写入,我之前测试过:
def key_inp(event):
print 'Key:', event.char
key_press = event.char
sleep_time = 0.030
while True:
try:
if key_press.lower() == 'w':
print "w"
elif key_press.lower() == 's':
print "s"
elif key_press.lower() == 'a':
print "a"
elif key_press.lower() == 'd':
print "d"
elif key_press.lower() == 'q':
print "q"
elif key_press.lower() == 'e':
print "e"
elif key_press.lower() == 'p':
print "stop"
except(KeyboardInterrupt):
print('Finished')
我的问题是,我编写的脚本(并使用stackoverflow成员进行了改进)在打开时立即关闭
有人能告诉我为什么,以及我如何修复它,使脚本一直保持打开状态,直到我用Ctrl+c中断它吗?编辑:这个答案依赖于安装readchar模块。您可以通过pip:
pip install readchar
安装它
您试图使用的代码没有任何功能:您只定义了一个函数,但从不调用它。除此之外,它还包含缩进错误
与您试图实现的目标大致相同,但以点作为完成键:
import readchar
while True:
key = readchar.readkey()
key = key.lower()
if key in ('wsadqe'):
print 'Key:', key
elif key == 'p':
print "stop"
sleep_time = 0.030
if key == '.':
print "finished"
break
key\u press
从何而来?。while循环和inkey\u inp
函数中的情况是否相同?您提供的代码位示例中有一个未使用的局部变量,后来是一个未分配的局部变量。你能用你正在尝试使用的实际示例脚本进行编辑吗?