如何在不需要启动终端 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
我想要某种等待直到按下某个热键的封锁。我会很高兴像 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