需求
想实现一个控制程序运行开关的功能:按一下键盘某个键(或者鼠标)后程序开始运行,再次按下,程序结束运行。
标题
由于本人技术有限,只能用已知的知识解决问题了。控制开始运行可以用阻塞,但是程序运行时就不能用阻塞了,一开始想用循环+读取键盘状态,奈何搜了半天都搜不到python怎么读取键盘状态(顺便吐槽一下现在的博客好多转发,一模一样的内容太多了)。又用pygame试了一下不行,不知道为什么pygame.get_pressed()这里不起作用,导致break不出去。
#失败代码
import keyboard
from time import sleep
from pygame import init,event,key,K_k
init()
while 1:
print(0)
keyboard.wait('k')
while 1:
if not key.get_pressed()[K_k]:
print("T")
sleep(1)
else:
print("breaked")
sleep(1)
break
解决
算了,用多线程搞搞,总感觉有更简单的方法啊啊
import threading
import keyboard
from time import sleep
going = False
def switch():
global going
while 1:
keyboard.wait('k') #这里暂时用的K键控制
going = not going
sleep(1)
if __name__ == "__main__":
t = threading.Thread(target=switch)
t.setDaemon(True)
t.start()
while 1:
print("going ==",going)
if going:
print("program_running")
sleep(0.5)