Цикл автокликера выполняется рандомно и некорректно
Я новичок, решил сделать автокликер с двумя условиями: если переменная-переключатель, равна True, и если зажата лкм. А он кликает рандомное количество раз, и перестаёт, до следующего зажатия лкм. А мне нужно что-бы он бесконечно кликал пока зажата лкм. Искал инфу про такие скрипты - ничего конкретного, и я так и не понял как это починить.
import keyboard
import mouse
import time
import threading
active = False
def toggle_variable():
global active
active = not active
keyboard.add_hotkey('alt', toggle_variable)
def clicker():
time.sleep(0.625)
mouse.click(button='left')
def main():
while True:
if active and mouse.is_pressed(button='left'):
clicker()
clicker_thread = threading.Thread(target=main)
clicker_thread.start()
while True:
time.sleep(1)
pass
Я уверен что и конец написан неправильно, но каким бы он не был, цикл работает некорректно.
Ответы (1 шт):
Вот пример с простым переключением через альт при желании можно добавить еще какую-либо клавишу:
import keyboard
import mouse
import time
active = False
def toggle_variable():
global active
active = not active
keyboard.add_hotkey('alt', toggle_variable)
def main():
while active:
print('CLICK')
time.sleep(0.05)
mouse.click(button='left')
while True:
main()
Проблема возникает если необходимо например при зажатой ЛКМ прожимать эту кнопку еще и скриптом, потому что тогда статус зажатия ЛКМ оказывается сбит. Мой совет это поменять ЛКМ на другую клавишу например колесико или правую. А еще луче просто еще одну кнопку на клавиатуре. Код для выполнения действия с нажатием alt и зажатой ЛКМ:
import keyboard
import time
from ctypes import windll
GetAsyncKeyState = windll.user32.GetAsyncKeyState
VM_LBUTTON = 0x01
active = False
def toggle_variable():
global active
active = not active
keyboard.add_hotkey('alt', toggle_variable)
def main():
while GetAsyncKeyState(VM_LBUTTON)!=0 and active:
print(GetAsyncKeyState(VM_LBUTTON))
time.sleep(0.05)
while True:
main()