python - 停止脚本的热键 - Python
问题描述
我正在尝试创建一个热键来停止我的脚本,这是我到目前为止的代码。
import time
import keyboard
running = True
def stop(event):
global running
running = False
print("stop")
# press ctrl+esc to stop the script
keyboard.add_hotkey("ctrl+esc", lambda: stop)
while running:
time.sleep(2)
print("Hello")
time.sleep(2)
解决方案
add_hotkey 期望回调作为第二个参数,因此您必须将 stop 函数传递给它,另一方面,当调用回调时,不会传递任何事件。
比使用布尔变量更好的解决方案是使用 threading.Event,因为这是线程安全的,因为回调是在辅助线程中调用的。
import threading
import time
import keyboard
event = threading.Event()
def stop():
event.set()
print("stop")
keyboard.add_hotkey("ctrl+esc", stop)
while not event.is_set():
time.sleep(2)
print("Hello")
time.sleep(2)
推荐阅读
- angular - Deeplinks ionic Runtime Error object(...) is not a function
- npm - Npm 随机冻结
- mysql - 两个数据库之一中的 max_connections,相同的配置
- html - 如何更改标签和输入之间的间距?
- r - 如何从列中绘制 ggplot 中的分类和数值数据?
- amazon-web-services - 如何使用 AWS CLI 在 Secret Manager 下删除过去 6 个月未检索到的 AWS Secret
- apple-push-notifications - 使用推送梁发送严重警报
- r - 由于 libpcre2-8-0 无法安装 R
- python - 气流 | 按自己的时间表运行任务
- ios - 在objective-c中无法访问Swift定义的便利init