4
dpressed = 0

def on_press(key):

    if key == ('d'):
        global dpressed
        dpressed+=1
        logging.info("D: %s" % dpressed)

当我运行此代码并按 d 时,没有任何反应,我怀疑这是因为在检查时需要调用其他键。有人知道它应该是什么吗?

4

4 回答 4

4

对于其他可能遇到此问题的人,我从顶部的 pynput.keybord 导入了 KeyCode。然后我将 ('d') 更改为 KeyCode.from_char('d')。这应该适用于有此问题的任何人。这里有一个很好的解释

于 2018-12-09T16:11:40.463 回答
4

您需要将密钥格式化为 char 格式,否则它将不等于特定字符。

尝试

if key.char == ('d'):

完整的代码是:

dpressed = 0

def on_press(key):

    if key.char == ('d'):
        global dpressed
        dpressed+=1
        logging.info("D: %s" % dpressed)
于 2019-10-16T13:24:27.303 回答
3

对于任何有这个问题的人。这就是我解决它的方法

    from pynput.keyboard import Key, Listener, KeyCode

    def print_key(*key): ## prints key that is pressed
    # key is a tuple, so access the key(char) from key[1]
        if key[1] == KeyCode.from_char('d'):
            print('yes!')

    def key(): ## starts listener module
        with Listener(on_press=CT.print_key) as listener:
            listener.join()
    
    while True:
        key()

来源:https ://github.com/moses-palmer/pynput/issues/97

于 2021-08-18T14:03:20.230 回答
0

你有听众吗?

没有监听器,代码将无法工作。尝试在代码的最后添加它。

with Listener(
    on_press=on_press,
    on_release=on_release) as listener:
listener.join()
于 2018-12-09T15:36:05.997 回答