如何等待直到在python3中按下热键而无需打开终端窗口?

时间:2018-12-05 11:20:08

标签: python-3.x opencv pynput

我想要某种封锁,直到某个特定的热键被按下。我对诸如input('按Enter键继续')之类的东西很满意,除了事实是这要求我的屏幕显示在终端页面上,我希望在我将注意力集中在另一个窗口时拿起我的按键。

路易斯·何塞(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

1 个答案:

答案 0 :(得分:2)

上面的代码将不起作用,因为cv2.waitKey旨在在使用cv2.imshow创建显示窗口并且您要停止显示时起作用。这是有道理的,因为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