Python键按下并释放Listen

2024-09-27 09:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python代码控制一个远程玩具车

def getkey():
        fd = sys.stdin.fileno()
        old = termios.tcgetattr(fd)
        new = termios.tcgetattr(fd)
        new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
        new[6][TERMIOS.VMIN] = 1
        new[6][TERMIOS.VTIME] = 0
        termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
        c = None
        try:
                c = os.read(fd, 1)
        finally:
                termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
        return c

def car():
    while True:
        key = getkey()
        if key == 's': #Down arrow
            print "Down"
            Backward()
        elif key == 'w': #Up arrow
            print "Up"
            forward()
        elif key == 'a': 
            print "left"
            Left()
        elif key == 'd': 
            print "Right"
            Right()
        elif key == 'q': #Quit
            print "That's It"
            break
def forward():
    GPIO.output(11,True)  #Move forward

当我按下'w'forward()时,调用方法,汽车向前移动,但直到我 退出程序或从其他方法调用GPIO.output(11,Flase)。

是否有任何密钥侦听器检测任何特定密钥的密钥释放。

例如,如果按下'w'则调用此方法,如果释放则调用其他方法

Sudo代码

if w_isPressed()
   forward()
else if w_isReleased()
    stop()

Tags: 方法key代码newifdef密钥old
1条回答
网友
1楼 · 发布于 2024-09-27 09:32:18

面临着类似的问题(我不是Python专家),但这对我有效

import pynput
from pynput import keyboard 

def on_press(key):
    try:
        print('Key {0} pressed'.format(key.char))
        #Add your code to drive motor
    except AttributeError:
        print('Key {0} pressed'.format(key))
        #Add Code
def on_release(key):
    print('{0} released'.format(key))
    #Add your code to stop motor
    if key == keyboard.Key.esc:
        # Stop listener
        # Stop the Robot Code
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

相关问题 更多 >

    热门问题