首页 > 解决方案 > 如何将“KeyboardInterrupt”命令替换为另一个键?

问题描述

我有以下代码:

while True:
    try:
        #DoSomething
    except KeyboardInterrupt:
        break

但我不想使用Crtl + C,而是想键入另一个键来结束循环。我怎样才能做到这一点?

标签: pythonpython-3.xkeyboardinterrupt

解决方案


您可以使用该keyboard模块:

import keyboard

while True:
    if keyboard.is_pressed("some key"):
        break

    do_something()

这将继续做某事,直到some key被按下。然后,它将跳出无限循环。

要捕获热键,请使用以下add_hotkey功能:

import keyboard


def handle_keypress(key):
    global running

    running = False
    print(key + " was pressed!")


running = True
keyboard.add_hotkey("ctrl+e", lambda: handle_keypress("Ctrl-E"))

while running:
    do_something()

或者您可以使用pynput

from pynput.keyboard import Listener


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


with Listener(
        on_press=on_press) as listener:

    listener.join()


推荐阅读