2

当按下键盘键 q 时,我需要停止程序。我怎样才能在下面的代码中实现这一点?如何time.sleep通过打印某些内容来忽略和检测按键并退出程序?目前,按键仅在 10 秒后被检测到。假设我在 3 秒后按 q 程序没有退出。

import sys
import time

import keyboard

def hd():
    print("Hi")
    time.sleep(10)
    if keyboard.is_pressed("q"):
        print(keyboard.is_pressed("q"))
        sys.exit()


while True:
    hd()
4

2 回答 2

2

time.sleep()是阻塞调用。程序运行时没有任何反应。

缩短间隔。例如,不是睡 10 秒,而是睡 100 × 0.1 秒。

import sys
import time

import keyboard

def hd():
    print("Hi")
    for _ in range(100):
        time.sleep(0.1)
        if keyboard.is_pressed("q"):
            print(keyboard.is_pressed("q"))
            sys.exit()

while True:
    hd()

对于更复杂的行为(在侦听键盘事件的同时进行实际工作),您将不得不研究多线程。

于 2021-12-23T10:39:13.953 回答
1

您可以添加一个hotkey,而不是轮询键盘以检查是否按下了某个键。当按下热键q(或您喜欢的任何键)时,将quit调用触发函数。

import keyboard
import time
import sys

exitProgram = False

# prepare to exit the program
def quit():
    global exitProgram
    exitProgram=True
    
# set hotkey    
keyboard.add_hotkey('q', lambda: quit())

# main loop to do things
while not exitProgram:
    print("Hello")
    time.sleep(1)
    
print("bye bye")
sys.exit()

于 2021-12-23T11:53:55.133 回答