You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何无需按下回车键即可即时读取键盘输入控制机器人?

无回车即时读取键盘输入实现方案

有两种常用实现方案可以满足按键按下后立即触发功能,无需等待回车确认:

方案1:使用跨平台第三方库keyboard(推荐,适配全平台)

无需自己处理系统差异,调用逻辑最简单:

  • 先安装依赖:pip install keyboard
  • 功能实现代码:
import keyboard

# 此处替换为你自己的机器人控制逻辑
def goRight():
    print("向右移动")
def goLeft():
    print("向左移动")

while True:
    if keyboard.is_pressed('l'):
        goLeft()
        # 等待按键松开,避免单次按压触发多次逻辑,suppress参数避免按键输入落到系统缓冲区
        keyboard.wait('l', suppress=True)
    elif keyboard.is_pressed('r'):
        goRight()
        keyboard.wait('r', suppress=True)
    elif keyboard.is_pressed('e'):
        print("程序退出")
        break

方案2:使用标准库实现(无需安装第三方依赖)

需要根据运行系统选择对应代码:

Windows平台

使用系统自带的msvcrt模块实现:

import msvcrt

def goRight():
    print("向右移动")
def goLeft():
    print("向左移动")

direction = ""
while direction != b"e":
    # 检测是否有按键输入
    if msvcrt.kbhit():
        direction = msvcrt.getch()
        if direction == b"r":
            goRight()
        elif direction == b"l":
            goLeft()

Linux/macOS平台

使用termios和tty标准库实现:

import sys
import tty
import termios

def goRight():
    print("向右移动")
def goLeft():
    print("向左移动")

# 实现单字符读取函数
def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
    finally:
        # 恢复终端原有设置
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

direction = ""
while direction != "e":
    direction = getch()
    if direction == "r":
        goRight()
    elif direction == "l":
        goLeft()

注意事项

  • Linux/macOS环境下运行键盘读取相关代码时,可能需要使用root权限(sudo前缀启动程序)才能正常获取键盘事件
  • 标准库实现需要按运行系统区分代码,通用性不如第三方库方案

内容的提问来源于stack exchange,提问作者laieman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:24:00