from pynput.keyboard import Listener, GlobalHotKeys
import time
from threading import Thread
# 全局变量,控制监听是否终止
stop_listening = False
def Fun1():
print("Function for Alt+1")
global stop_listening
stop_listening = True
def Fun2():
print("Function for Alt+3")
global stop_listening
stop_listening = False
def on_press():
def threadFun():
# 检查是否需要终止监听
while True:
print("1")
time.sleep(1)
global stop_listening
if stop_listening:
break
Thread(target=threadFun).start()
if __name__ == '__main__':
# 直接绑定快捷键
with GlobalHotKeys({'<alt>+1': Fun1,
'<alt>+2': on_press,
'<alt>+3': Fun2,
}
) as h:
h.join()
解释:按alt+2启动程序,开一个单独的线程,屏幕不停地输出1,Fun2会让全局变量stop_listening变成Flase,会打破on_press的主循环,使得on_press任务结束,这个全局变量可以控制有循环的程序,然而在一些循环比较慢的程序中,这样的书写并不太好用。如何能用一个快捷键直接结束另一个快捷键的线程,应该能解决问题。
文章介绍了使用Python库pynput实现全局热键功能,包括Alt+1,Alt+2和Alt+3的绑定。特别提到如何通过Alt+2启动线程并控制其循环,以及讨论了如何改进设计以允许一个快捷键结束另一个快捷键的线程问题。
7905

被折叠的 条评论
为什么被折叠?



