[英]Python: How to start/stop while True loop on Keyboard event
我正在尝试编写一个模拟鼠标单击的小脚本。 它应该在键盘上按下组合键时启动/停止,所以我想每次按下这个组合时,我会生成或终止只包含一个True循环的子进程并进行一些点击。 现在我可以开始循环,但不要终止。 我尝试为HookManager创建一个新进程,但我得到了相同的结果。 任何帮助都将非常感激
import time
import win32api
import win32con
import pythoncom
import pyHook
import multiprocessing
i=0
def click():
while True:
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
time.sleep(0.005)
def OnKeyboardEvent(event):
global i
if (event.Ascii == 4) and (i == 0):
i = 1
c = multiprocessing.Process(target=click())
c.start()
print("started")
elif (event.Ascii == 4) and (i == 1):
i = 0
c.terminate()
print("terminated")
return True
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
显然你不想使用while True:
语句,但是这样的事情:
def worker():
while running:
#do the work
...
def terminateWorker():
running = false
...
running = true
startWorker()
terminateWorker()
或者你可以使用break in if语句检查循环停止标志。
def click():
while True:
if(stopNow):break
...
stopNow=false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.