如何在不需要启动终端 window 的情况下等到 python3 中按下热键?

how to wait until a hotkey is pressed in python3 without the terminal window needing to be up?

我想要某种等待直到按下某个热键的封锁。我会很高兴像 input('Press Enter to continue') 这样的东西,除了这需要我的屏幕在终端页面上,我希望它能在我专注于另一个 window 时拿起我的钥匙.

Luis Jose 在这里的解决方案似乎可行,而且我已经在使用 opencv 进行 smoethign,所以它被导入了:How to kill a while loop with a keystroke? 但是 运行 代码对我没有任何作用,它也没有没有注意到我按下 'a' 并永远停留在循环中的事实。

import cv2

while (1):
    k=0xFF & cv2.waitKey(1)
    if k == ord('a'):
        break

上面的代码将不起作用,因为 cv2.waitKey 设计用于在使用 cv2.imshow 创建显示 window 并且您想停止显示时工作。这是有道理的,因为 opencv 被设计为图像和视频处理工具箱。您可以尝试使用 pynput 包。

from pynput import keyboard

def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

def on_release(key):
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

当您按下 esc 键时,上述代码终止。 有关套餐的更多详细信息,您可以访问:pynput project page