如何在按键时的 while 循环中停止功能并退出程序 运行?
How to stop a function & exit program running in a while loop on key press?
我需要在按下键盘键 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()
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()
对于更复杂的行为(在进行实际工作的同时还监听键盘事件),您将不得不研究多线程。
您可以只添加一个 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()
我需要在按下键盘键 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()
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()
对于更复杂的行为(在进行实际工作的同时还监听键盘事件),您将不得不研究多线程。
您可以只添加一个 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()