Python 我正在尝试制作宏/热键

Python 我正在尝试制作宏/热键,python,macros,hotkeys,Python,Macros,Hotkeys,它就是不起作用,我说了一个错误 AttributeError: 'Controller' object has no attribute 'is_pressed' 代码: 有人能帮帮我吗 pynput有一个特殊的类Listener来捕捉按下的键。它在线程中运行,不需要,而为True则不需要阻止主代码 按ESC停止 from pynput.keyboard import Key, Controller, Listener def on_press(key): print('{} pre

它就是不起作用,我说了一个错误

AttributeError: 'Controller' object has no attribute 'is_pressed'
代码:


有人能帮帮我吗

pynput
有一个特殊的类
Listener
来捕捉按下的键。它在线程中运行,不需要
,而为True则不需要阻止主代码

ESC
停止

from pynput.keyboard import Key, Controller, Listener

def on_press(key):
    print('{} pressed'.format(key))
    #print(dir(key))

    try:
        if key.char == 'u':
            keyboard.press('w')
            keyboard.release('w')
    except Exception as ex:
        print(ex)
    
def on_release(key):
    print('{} release'.format(key))

    if key == Key.esc:
        # Stop listener
        return False

# --- main ---

keyboard = Controller()

listener = Listener(on_press=on_press, on_release=on_release)

listener.start()

# ... other code ...

listener.join()

顺便说一句:

如果您希望在系统中使用全局宏/热键,并使用Linux,那么您可以为此使用特殊程序。它是用Python创建的,它有GUI来创建宏/脚本/等等

如果您希望在系统中使用全局宏/热键并使用Windows,则可以使用流行的

如果你想在一些
GUI
程序中创建宏/热键,那么你应该使用
GUI
函数来实现这一点。

视图,下面是它的一个片段

全局热键 键盘监视器的一个常见用例是对全局热键做出反应。 由于侦听器不维护任何状态,热键涉及 多个键必须将此状态存储在某个位置

pynput为此提供类
pynput.keyboard.HotKey
。它包含两种更新状态的方法,设计为 可与键盘侦听器互操作:
pynput.keyboard.HotKey.按
pynput.keyboard.HotKey.release
,可以作为 侦听器回调

[……]

这将创建一个热键,然后使用侦听器更新其 状态同时按下所有指定键后, 激活时将调用

请注意,键是通过
pynput.keyboard.Listener.canonical传递的
在传递到
热键
实例之前。这是为了删除任何 来自关键事件的修改器状态,并使用 多个物理按钮

方法
pynput.keyboard.HotKey.parse
是一个方便的函数 将快捷方式字符串转换为键集合。请看它的 有关更多信息,请参阅文档

要注册多个全局热键,请使用便利类
pynput.keyboard.GlobalHotKeys


pynput
有一个特殊的类
Listener
来捕捉按下的键,并且它不需要
而为True
<代码>控制器
仅用于发送新钥匙。你为什么认为必须有
被按下了?您检查了吗?为什么您认为按下了
属性应该存在?
from pynput.keyboard import Key, Controller, Listener

def on_press(key):
    print('{} pressed'.format(key))
    #print(dir(key))

    try:
        if key.char == 'u':
            keyboard.press('w')
            keyboard.release('w')
    except Exception as ex:
        print(ex)
    
def on_release(key):
    print('{} release'.format(key))

    if key == Key.esc:
        # Stop listener
        return False

# --- main ---

keyboard = Controller()

listener = Listener(on_press=on_press, on_release=on_release)

listener.start()

# ... other code ...

listener.join()