释放鼠标键后停止 运行 函数
Stop running function once mouse key is released
我有一个在按下鼠标键时运行的函数。我想在它发布后取消它。我将如何使用 pynput
来做到这一点?为了获得一些帮助,这是我用来执行此操作的代码,但它在等待 on_click
函数完成时不起作用,或者这是我的猜测。
running = False
i = 0
f = 4
delta_x = [1,2,3]
delta_y = [3,2,1]
def wasd(l):
global f
f = f + l
print(f)
if (f == 5):
return True
else:
return False
def logging_mouse(running, i):
while (running and i < len(delta_x)):
print(delta_x[i],delta_y[i])
if wasd(0) == True: break
i = i+1
running = False
def on_click(*args):
global running
global i
print(running)
i = args[3]
if args[-1]:
if not running:
running = True
threading.Thread(target=logging_mouse(running,i)).start()
else:
running = False
wasd(1)
f = 4
i = 0
with Listener(on_release=wasd(1),on_click=lambda event1,event2,event3,event4: on_click(event1,event2,event3,i,event4)) as listener:
listener.join()
while True:
def on_press_start(*args):
if args[-1]:
return False
def on_press_loop(*args):
if not args[-1]:
return False
i = 0
with Listener(on_click=on_press_start) as listener:
listener.join()
with Listener(on_click=on_press_loop) as listener:
for i in range(len(delta_x)):
print(delta_x[i],delta_y[i])
if not listener.running:
break
print(i)
我有一个在按下鼠标键时运行的函数。我想在它发布后取消它。我将如何使用 pynput
来做到这一点?为了获得一些帮助,这是我用来执行此操作的代码,但它在等待 on_click
函数完成时不起作用,或者这是我的猜测。
running = False
i = 0
f = 4
delta_x = [1,2,3]
delta_y = [3,2,1]
def wasd(l):
global f
f = f + l
print(f)
if (f == 5):
return True
else:
return False
def logging_mouse(running, i):
while (running and i < len(delta_x)):
print(delta_x[i],delta_y[i])
if wasd(0) == True: break
i = i+1
running = False
def on_click(*args):
global running
global i
print(running)
i = args[3]
if args[-1]:
if not running:
running = True
threading.Thread(target=logging_mouse(running,i)).start()
else:
running = False
wasd(1)
f = 4
i = 0
with Listener(on_release=wasd(1),on_click=lambda event1,event2,event3,event4: on_click(event1,event2,event3,i,event4)) as listener:
listener.join()
while True:
def on_press_start(*args):
if args[-1]:
return False
def on_press_loop(*args):
if not args[-1]:
return False
i = 0
with Listener(on_click=on_press_start) as listener:
listener.join()
with Listener(on_click=on_press_loop) as listener:
for i in range(len(delta_x)):
print(delta_x[i],delta_y[i])
if not listener.running:
break
print(i)