当前位置: 首页 > 知识库问答 >
问题:

如何将键盘事件用作条件语句的一部分

欧阳勇
2023-03-14

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

最初尝试了[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”(除了按键和按键释放事件的输出)。按下“1”的输出不起作用。

共有2个答案

梁宪
2023-03-14

在_release上按_press/接收的参数不是字符串,而是一个key/KeyChar对象,这就是为什么不能直接将其与字符串进行比较。

要访问键盘输入字符,请使用键。char

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

查看pynput文档中关于如何捕获非字母键的示例代码。

韩涵衍
2023-03-14

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

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

上述代码将一直运行,直到收到作为按键的1。按下该键后,1被按下将被打印。

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

 类似资料:
  • 键盘事件的种类 键盘事件由用户击打键盘触发,主要有keydown、keypress、keyup三个事件,它们都继承了KeyboardEvent接口。 keydown:按下键盘时触发。 keypress:按下有值的键时触发,即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown事件,再触发这个事件。 keyup:松开键盘时触发该事件。

  • 输入框接口 用于弹起输入框,供用户输入文字。可以通过注册监听函数进行监听用户的输入,监听完毕请及时调用注销方法,取消监听。 BK.UI.showKeyboard(Object) 显示输入框,弹出键盘 手Q版本:7.6.5 函数参数Object: 属性名 类型 是否必填 说明 deaultText string 否 默认要展示的字符串 complete Function 否 接口调用完成回调 示例:

  • 本文向大家介绍vue如何监听键盘事件?相关面试题,主要包含被问及vue如何监听键盘事件?时的应答技巧和注意事项,需要的朋友参考一下 方法 addEventListener

  • 我正在实现一个KeyEventDispatcher。dispatchKeyEvent()将所有键盘操作传递给外部(Android)设备。将KeyEvents轻松转换为设备提供的协议的一个关键问题是将事件分为两种类型:Unicode事件和“动作事件”(杂项、编辑、导航键-F1、Del、箭头等)。 Java非常方便地告诉用户击键生成的Unicode字符:您只需检查是否,并且保证生成的字符为。无需处理修

  • 对于桌面游戏,一般需要通过键盘做一些游戏内的控制,这时你就需要监听键盘事件。Cocos2d-x 支持键盘事件,就像上节介绍的触摸事件一样。 创建键盘事件监听器: // creating a keyboard event listener auto listener = EventListenerKeyboard::create(); listener->onKeyPressed = CC_CALL

  • 与响应鼠标事件相比,响应 Canvas 键盘事件没有那么直接,因为 Canvas 本身并不支持键盘事件的响应。我们需要耍一点小手段——在 Canvas 上添加一个支持键盘事件的其他对象。 本节的例程将在 7.2 节例程的基础上添加键盘响应事件。 html 部分变更的代码如下: //canvas_mk_event.html <canvas tabindex="0"></canvas>