首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pynput:计数按键次数

Pynput:计数按键次数
EN

Stack Overflow用户
提问于 2020-08-31 20:19:25
回答 1查看 248关注 0票数 0

我想写一个程序来计算键盘上一个键被按下的频率(例如每天)。我可以使用Pynput来识别某个按键,但我在计算部分遇到了困难。这是我到目前为止所得到的:

代码语言:javascript
复制
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个字母分开,也不知道该怎么做now...does,有人知道该怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-20 01:25:16

我自己也在试着解决这个问题。为了回答这个错误的要求,它希望您在传递给on_press的参数中定义参数"pressed“。

例如。

代码语言:javascript
复制
    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

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

代码语言:javascript
复制
    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()

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63670700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档