Что делать, если не работает автокликер на Python
У меня почему-то не запускается автокликер
from tkinter import *
from tkinter import ttk
import time
import mouse
import keyboard
interval = 0
def cpsGet():
global interval
cpsStr = cpsInput.get()
cpsFloat = float(cpsStr)
interval = 1 / cpsFloat
print(interval)
def intervalGet():
global interval
intervalStr = intervalInput.get()
interval = float(intervalStr)
print(interval)
def change():
global work
work = not work
print(work)
work = False
keyboard.add_hotkey('ё', change)
while work:
mouse.click(button='left')
time.sleep(interval)
window = Tk()
window.title("AutoClicker")
window.geometry("250x200")
cpsText = Label(text="Установить клики в секунду:")
cpsText.pack(anchor=W)
cpsInput = Entry()
cpsInput.pack(anchor=W)
cpsSetBtn = Button(text="Установить", command=cpsGet)
cpsSetBtn.pack(anchor=W)
cpsText = Label(text="")
cpsText.pack(anchor=W)
intervalText = Label(text="Установить интервал:")
intervalText.pack(anchor=W)
intervalInput = Entry()
intervalInput.pack(anchor=W)
intervalSetBtn = Button(text="Установить", command=intervalGet)
intervalSetBtn.pack(anchor=W)
startEndBtn = Button(text="Запуск/Выключение", command=change)
startEndBtn.pack(anchor=W)
window.mainloop()
Вот код, сам не могу найти ошибку, сам Python ошибок не выдаёт, значения переменных задаются, просто не активируется фрагмент кода с автокликом
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Посмотрите в сторону метода after или библиотеке threading - ПРИМЕР
Небольшой пример для вас:
import tkinter as tk
import mouse
import keyboard
class AutoClicker(tk.Tk):
def __init__(self):
super().__init__()
self.title("AutoClicker")
self.geometry("300x150")
# Значения по умолчанию
self.default_interval = "1.0"
self.interval = 1.0 # 1 клик в 1 секунду
self.is_running = False
self.create_widgets()
keyboard.add_hotkey('F1', self.toggle_clicker)
def create_widgets(self):
self.interval_var = tk.StringVar(value=self.default_interval)
tk.Label(self, text="Интервал в секундах:").pack(anchor=tk.W, pady=5)
self.interval_input = tk.Entry(self, textvariable=self.interval_var)
self.interval_input.pack(anchor=tk.W, padx=10)
tk.Button(self, text="Установить интервал", command=self.set_interval).pack(anchor=tk.W, padx=10, pady=5)
self.toggle_button = tk.Button(self, text="Запуск/Остановка", command=self.toggle_clicker)
self.toggle_button.pack(anchor=tk.W, padx=10, pady=10)
def set_interval(self):
try:
self.interval = float(self.interval_var.get())
print(f"Интервал установлен: {self.interval:.4f} сек")
except ValueError:
print("Некорректное значение интервала. Сброс на значение по умолчанию.")
self.interval_var.set(self.default_interval)
self.interval = float(self.default_interval)
def toggle_clicker(self):
self.is_running = not self.is_running
if self.is_running:
self.start_clicking()
print("Автокликер запущен")
else:
print("Автокликер остановлен")
# Блокировка кнопки на 1 секунду. Избовляет от самонажатия.
self.toggle_button.config(state=tk.DISABLED)
self.after(1000, self.enable_toggle_button)
def enable_toggle_button(self):
self.toggle_button.config(state=tk.NORMAL)
def start_clicking(self):
if self.is_running:
mouse.click(button='left')
self.after(int(self.interval * 1000), self.start_clicking)
if __name__ == "__main__":
root = AutoClicker()
root.mainloop()