The code below is intended to print out the contents of arrays, until either the mouse (left click) is released, or the end of the array is reached. How would I stop the while loop in the function logging_mouse, once the mouse is released?
running = False
i = 0
delta_x=[1,2,3]
delta_y = [3,2,1]
def logging_mouse(running,i):
while (running and i < len(delta_x)):
print(delta_x[i],delta_y[i])
i = i+1
running = False
def on_click(*args):
global running
global i
print(running)
i = args[3]
print(i)
if args[-1]:
if not running:
running = True
threading.Thread(target=logging_mouse(running,i)).start()
else:
running = False
i = 0
with Listener(on_click=lambda event1,event2,event3,event4: on_click(event1,event2,event3,i,event4)) as listener:
listener.join()
Advertisement
Answer
you need to actually use the args to the on_click function… you can detect whether or not a button is pressed down or released, the signature for on_click should be on_click(x,y,button,pressed) where x and y represent the location of the mouse press, button says which button was pressed, and pressed is True if the button is down and False if it was released