【问题标题】:Pynput: Count keypressesPynput:计算按键次数
【发布时间】:2020-09-20 14:13:33
【问题描述】:

我想编写一个程序来计算键盘上按键的频率(例如每天)。我可以使用 Pynput 来识别某个按键,但我正在努力处理计数部分。这是我到目前为止得到的:

from pynput.keyboard import Key, Listener
i = 0
def on_press(key, pressed):
    print('{0} pressed'.format(
        key))
    if pressed({0}):
        i = i + 1
        
def on_release(key):
    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()

执行以下错误: TypeError: on_press() missing 1 required positional argument: 'pressed'

我也不知道如何分隔所有 26 个字母,也不确定现在该怎么做...有人知道吗?

【问题讨论】:

  • 看起来on_press 函数只接受一个参数。 Docs

标签: python pynput


【解决方案1】:

我正在尝试自己解决这个确切的问题。为了回答错误想要什么,它希望您在传递给 on_press 的参数中定义参数“pressed”。

例如

    def on_press(key, pressed=0):
        print('{0} pressed'.format(
            key))
        if pressed({0}):
            i = i + 1

您在该块上方的 i = 0 超出了 on_press 块的范围,因此无法使用。

我遇到的问题是,我可以让它递归地计算击键次数,但是它不会停止并且只需一次击键就可以达到最大递归深度!

如果我有任何进展,我会再次回复。也祝你好运!

---我想通了! --- 以下指向另一个 StackOverflow 帖子的链接引导我朝着正确的方向前进: Checking a specific key with pynput in Python

这是我的代码。它将显示输入的字符并增加输入的键数:

    from pynput.keyboard import Key, Listener

    strokes = 0


    def on_press(key):
        if key == Key.esc:
            return False
        print('{0} pressed'.format(
            key))
        global strokes
        strokes += 1
        print(strokes)


    with Listener(
            on_press=on_press) as listener:
        listener.join()

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多