Python 键盘监听器

Posted

技术标签:

【中文标题】Python 键盘监听器【英文标题】:Python keyboard listener 【发布时间】:2020-05-30 09:33:11 【问题描述】:

我用过这个code,它运行良好。但是,它有一些奇怪的地方,就像它不是 Python 一样!

print_event 中的 e 变量以我从未见过的方式使用。它是一个常规函数,可以打印传递给它的任何内容,但问题在于它的使用方式,甚至是应该作为参数传递给参数 e 的事件变量

如果您不注意,append 函数似乎将添加的值返回给 print_event,而不是像 append 在 Python 中那样追加它们。整个函数一次被追加到处理程序列表中,然后它一直运行直到程序终止,就像是一个 while True 循环。

代码基本上启动了一个键盘监听器并不断记录按键,但是按键发生了什么是问题。低级侦听器中的 for 循环没有意义,如果它应该记录键而不是读取它们,为什么要遍历处理程序。此外,为什么要通过事件? Handlers是一个列表,不是函数,我只知道初始化变量的赋值运算符

此外,如果处理程序初始化为空,如果项目的内存空间未分配且不存在,它如何为项目分配值并通过它们?

我没有看到任何缓冲区函数被调用,那么它是如何工作的? Python 不应该是这样的

我要做的是实时访问处理程序列表并处理事件

我们将不胜感激。提前致谢

【问题讨论】:

请在问题本身中添加您所质疑的代码。链接不合适,并且可能会更改或中断未来用户阅读您的问题。 @Mark Tolonen 这是关于缩进的,我不想让试图回答的人感到困惑 【参考方案1】:

你问的是函数变量吗?

如果是,您可以像传递任何其他变量一样传递函数,然后用不同的名称调用它们。

EG:

def hi(string):
    print(string)

fns = [hi, hi]

for fn in fns:
    fn('hello')

如果这仍然令人费解,也许您可​​以使用调试器逐步完成它,以使这个想法看起来更具体。

【讨论】:

感谢您的回答。我知道可以迭代到像对象这样的函数,但没有意义。可以直接调用该函数。我要问的是在“主循环”的追加中使用的打印功能。我很感激一个解释,这对我来说似乎不可能。我想创建该类的一个实例并直接访问处理程序值,但是处理程序变量保持为空,是否使用了缓冲区?提前致谢。顺便说一句,如果您点击开头的单词代码,可以找到代码的链接

以上是关于Python 键盘监听器的主要内容,如果未能解决你的问题,请参考以下文章

Python键盘监听

Python监听鼠标键盘事件

python 在windows下监听键盘按键

python 监听键盘事件

Python 键盘鼠标监听

利用Python的pyHook包来进行键盘监听