【发布时间】:2020-12-07 01:12:04
【问题描述】:
我正在尝试编写一个简单的自动完成/热键脚本,让我可以输入诸如 SHIFT + K 之类的内容,Python 和 Pynput 会将其转换为“亲切的问候,John Smith,销售经理”。以下代码无限次键入文本并使程序崩溃。如何确保文本只输入一次?请注意,return False 和 l.stop() 无法按预期工作,因为它们会导致脚本完成并退出。按一下热键应该会导致输入一个文本实例。脚本应继续运行直到退出。
from pynput import keyboard
from pynput.keyboard import Controller, Listener
c = Controller()
def press_callback(key):
if key.char == 'k':
c.type("Kind regards")
l = Listener(on_press=press_callback)
l.start()
l.join()
【问题讨论】:
-
这会引发异常......
-
嗨内德,我试过你的代码,它对我来说很好,d.i。按“k”会为我输出一个“亲切的问候”。 Pessing SHIFT 将导致引发异常,因为 key.char 似乎只为字符键定义,而 SHIFT 不是。我是否误解了您的问题,或者您的脚本中有一些代码,但在发布的示例中没有?
-
对我来说它输入了大约一百次。如何调整代码使其只输入一次?我正在使用上面代码块中的内容。
-
在修复代码以捕获
AttributeError之后,它就可以工作了。你运行的是什么版本的 Python、pynput 和操作系统? -
正如 GordonAitchJays 的问题所暗示的,这可能是库、操作系统或 python 的某些特定版本的问题。它也可能与硬件有关。您是否尝试过在键盘或其他键盘上捕获不同的键?