【问题标题】:How can I control a Python script continuously with key inputs?如何通过按键输入连续控制 Python 脚本?
【发布时间】:2016-04-06 03:46:04
【问题描述】:

我创建了一个 Python 脚本,它可以从管道(命名为 pipe1)中获取命令。您可以在 Pastebin 上找到脚本。
我用这个其他脚本测试了这个脚本:

import sys

fw = open("pipe1", "w" )

fw.write('fd\n')
fw.close()

它成功了。

现在我想用另一个 Python 脚本来控制脚本,如果我按下 wasdp 并显示键,它可以在管道中写入我按。

在这个例子中,我只想打印我按下的键。稍后我将添加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 中断它?

【问题讨论】:

  • key_press 来自哪里?..在while 循环和key_inp 函数中是否相同?
  • 您提供的代码示例有一个未使用的局部变量,后来又是一个未分配的局部变量。您可以使用您尝试使用的实际示例脚本进行编辑吗?

标签: python input keyboard raspberry-pi robotics


【解决方案1】:

编辑:这个答案依赖于安装 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

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多