pynput doing mouse click action inside on_click
Kelv1nG opened this issue · 1 comments
Kelv1nG commented
im having a problem using mouse on_click function of pynput whenever the supplied function also performs a mouse click
quite similar with this post Taking Single Click Event and Propagating it to Multiple Areas - python, pynput, pyautogui
but i cant seem to make it work it just freezes
def win32_event_filter(msg, data):
if data.flags:
print('suppressing event')
return False
class EventHandler:
def __init__(self):
self.mouse_listener = None
def start(self):
self.mouse_listener = mouse.Listener(on_click=self.on_click, win32_event_filter=win32_event_filter)
self.mouse_listener.start()
self.mouse_listener.join()
def on_click(self, x, y, button, pressed):
if pressed:
if button == Button.left:
self.do_action()
if button == Button.right:
self.perform_click()
def do_action(self):
print('doing action')
print('action done')
def perform_click(self):
controller.click(Button.left) # crashes
is this a known issue or am i just doing it wrong? im using python 3.10, data.flags when using controller.click = 1, user click = 0
Kelv1nG commented
i managed to make it work by passing the perform click to a separate thread as stated in
https://github.com/hieupc20122009/pynput/blob/main/The%20mouse%20listener%20thread.py