Pynput:计算按键次数

问题描述

我想编写一个程序,该程序计算键盘上按键的频率(例如每天)。我可以使用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的参数中定义参数“ 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()

我希望这会有所帮助!