首页 > 解决方案 > 如何使用键盘事件作为条件语句的一部分

问题描述

我正在尝试制作一个输出按键事件作为对另一个键盘事件的响应的程序。如何让它使用条件语句中按下的键的特定值?我尝试的代码似乎完全跳过了条件语句。

最初尝试[if key == '1':],然后累了[if key == 1:]。还尝试了将 [key] 分配给变量的各种方法。还尝试了 [print('2')] 而不是使用[pyautogui.typewrite('2')]. 尝试将代码放在 on_press(key) 和 on_release(key) 中。

`

    import pyautogui
    from pynput.keyboard import Key, Listener

    def on_press(key):
        print('{0} pressed'.format(key))

    def on_release(key):
        print('{0} release'.format(key))
        k = format(key)
        if k == '1':       #THIS IS THE PART I CAN'T GET TO WORK
            pyautogui.typewrite('2', 0.5)
        if key == Key.esc:
    # Stop listener
            return False
    # Collect events until released
    with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

`

每当我在键盘上按“1”时,预计会输出“2”(除了 keypress 和 keyrelease 事件的输出)。按下“1”的输出不起作用。

标签: pythonpyautoguipynput

解决方案


您可以使用keyboard库来处理/创建关键事件。

while True:  
    try: 
        if keyboard.is_pressed('1'):   
            print('{} is pressed'.format(1))
            break
        else:
            pass
    except:
        break 

上面的代码一直运行,直到1作为按键被接收。按 键后,1 is pressed将打印。

您还可以进一步使用该库的其他功能,以检测按键按下。


推荐阅读