问题描述
我想编写一个程序,该程序计算键盘上按键的频率(例如每天)。我可以使用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()
我希望这会有所帮助!