Проверка на зажатие ЛКМ python

Рейтинг: 0Ответов: 1Опубликовано: 13.07.2023

Я делаю кликер и мне нужно чтобы кликалось только когда зажата ЛКМ вот код:

import pyautogui, time

def click_with_interval():
    while True:
        if pyautogui.mouseDown():
            pyautogui.click()
            time.sleep(0.2)
        else:
            break
while True:
    click_with_interval()

сейчас программа сразу кликает

Ответы

▲ 0Принят

я не много изменил код и вот полностью рабочий

import keyboard, mouse, threading, win32con, win32api
from time import sleep

isClicking = False
stopEvent = threading.Event()
clickEvent = threading.Event()
def on_key_press(event):
    global isClicking

    if event.name == 'alt':
        isClicking = not isClicking

        if isClicking:
            print("Кликер включен!")
            clickEvent.set()  # Signal the clicker to start
            threading.Thread(target=clicker).start()
            print(isClicking)
        else:
            print("Кликер выключен!")
            #здесь clicker() должен както выключатся
            clickEvent.clear()  # Signal the clicker to stop
            print(isClicking)

def is_left_mouse_button_pressed():
    # Проверяем состояние клавиши
    state = win32api.GetKeyState(win32con.VK_LBUTTON)
    
    # Если старшая битовая позиция равна 1, то клавиша зажата
    return (state & 0x8000) != 0

def clicker():
    while not stopEvent.is_set():
        if is_left_mouse_button_pressed() and clickEvent.is_set():
            # rkbrftv 
            x, y = win32api.GetCursorPos()
            # Кликаем по текущей позиции
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
        elif keyboard.is_pressed('Esc'):
            break
        sleep(0.01)

keyboard.on_press(on_key_press)
keyboard.wait('esc')