3

我有一个 python 应用程序,其中一个函数在递归循环中运行,并在循环的每个循环中将更新的信息打印到终端,一切都很好,直到我尝试停止这种递归。

它不会停止,直到终端窗口关闭或应用程序被终止(按下 control-c)但是我对该方法不满意。

我有一个函数可以停止循环并退出程序,它永远没有机会在循环中被调用,所以我希望将它分配给一个键,以便在按下它时调用它。

将一项功能分配给一个或多个键的最简单方法是什么?

4

4 回答 4

2

您可以在那时拦截ctrl+c信号并调用自己的函数而不是退出。

import signal
import sys

def exit_func(signal, frame):
    '''Exit function to be called when the user presses ctrl+c.
    Replace this with whatever you want to do to break out of the loop.
    '''
    print("Exiting")
    sys.exit(0) # remove this if you do not want to exit here

# register your exit function to handle the ctrl+c signal
signal.signal(signal.SIGINT, exit_func)

#loop forever
while True:
    ...

你应该sys.exit(0)用对你更有用的东西来代替。except您可以在循环体(或只是)之外引发异常并在其finally上执行清理操作。

于 2013-07-25T17:28:14.560 回答
1
import keyboard
import sys
from time import sleep

def kb():
    while True:
        if keyboard.is_pressed("a"):
            print("A key was pressed")
            sys.exit(0)
        



def main():

    kb()

if __name__ == "__main__":

    main()
于 2021-07-10T14:55:09.443 回答
0

这是一些代码

import keyboard
import sys

def kb():
    while True:
        #your code here
        if keyboard.is_pressed("a"): #replace with your key
            print("Key interrupt detected")
            #cleanup here
            sys.exit()
        #or here
if __name__ == "__main__":
    kb()

该程序检查您是否在每个循环中都按下了“A”键。如果有,它会退出。

于 2021-12-01T01:32:37.130 回答
0
import keyboard

def mywait():
    keyboard.read_key()

def my_function():
    print("hello")

def my_exit():
    quit()

keyboard.add_hotkey('h', my_function)
keyboard.add_hotkey('esc', my_exit)

while True:
    mywait()
于 2021-12-08T10:41:54.730 回答