@PosikGG

Как сделать так, чтобы при зажатии клавиши кнопка мыши кликала, а если отпустить кнопку, то она перестанет кликать?

Написал небольшой код, который должен был сам кликать. Как сделать так, чтобы когда пользователь нажимает и не отпускает кнопку мыши, программа сама кликала, а если пользователь её отпустит, то клацать она перестанет?

import mouse
import keyboard

def click():
    mouse.wait(button='left', target_types=('down'))
    
    if mouse.is_pressed(button='left'):
        while mouse.is_pressed(button='left'):
            mouse.on_click(mouse.click(button="left"), args=())
    click()

click()
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 1
veryoriginalnickname
@veryoriginalnickname
Как я понял, одна из основных проблем в клике. Mouse.click() сбивает зажатую клавишу. Нашел на Стаковерфлоу кусок кода, который перехватывает все события мыши. Накидал код, и работает это кое как, и еще довольно сильно зависит от задержки (SLEEP_1 и SLEEP_2). В общем, вот мои наработки:
import mouse
import time


class Clicker:
    events = []
    mouse.hook(events.append)
    SLEEP_1 = 0.15
    SLEEP_2 = 0.15
    is_released = False
    is_mouse_down = False

    def on_mouse_down(self):
        mouse.click()
        time.sleep(self.SLEEP_1)
        mouse.press()
        print('on_mouse_down')

    def click(self):
        while True:
            mouse._listener.queue.join()
            for event in self.events:
                if hasattr(event, 'event_type'):
                    self.is_mouse_down = event.event_type == 'down'
                    print(self.is_mouse_down)
                    if self.is_mouse_down:
                        print('MOUSE DOWN (ACTIVE)')
                    else:
                        if not self.is_released:
                            print('MOUSE UP (DEACTIVATED)')
                            mouse.release()
                            self.is_released = True
            if self.is_mouse_down:
                self.on_mouse_down()
            del self.events[:]
            time.sleep(self.SLEEP_2)


clicker = Clicker()
clicker.click()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы