#python #pynput
Вопрос:
У меня есть функция, которая запускается при нажатии клавиши мыши. Я хотел бы отменить его, как только он будет выпущен. Как бы я это сделал, используя 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()
Комментарии:
1. reddit.com/r/learnpython/comments/8y0p3j/… *os447q cid YW1wLXVxVndodm9NZ2E2WlJDLUNwSDFqVlE. Это помогает
Ответ №1:
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)