카테고리 없음

AUTOCLICK 구현

ris 2025. 3. 3. 17:51

게임을 하다가 오토 클릭이 필요해서 만들어봤습니다.

하다가 비동기적 처리도 배우고 꽤 재밌었습니다.

파일도 첨부합니다. 수정 사항 원하시면 가끔 수정하겠습니다.

AutoClick.zip
13.07MB

 

 

파일 압축 푼 후에 exe 파일 꺼내시면 작동이 안 할 수도 있습니다.

import pyautogui
import time
import threading
from pynput import keyboard
import tkinter as tk

running = False
click_method = "Left click"
interval = 3

def start_clicking():
    global running
    if not running:
        running = True
        start_button.config(state="disabled", bg="#90EE90")
        stop_button.config(state="normal", bg="SystemButtonFace")
        threading.Thread(target=auto_click, daemon=True).start()

def auto_click():
    while running:
        pyautogui.click(button='right' if click_method == 'Right click' else 'left')
        time.sleep(interval)

def stop_clicking():
    global running
    running = False
    stop_button.config(state="disabled", bg="#FF7F7F")
    start_button.config(state="normal", bg="SystemButtonFace")

def on_key_press(key):
    global running, click_method
    if key == keyboard.Key.f1:
        click_method = 'Left click'
        click_method_label.config(text=click_method)
    elif key == keyboard.Key.f2:
        click_method = 'Right click'
        click_method_label.config(text=click_method)
    elif hasattr(key, 'char') and key.char == 'x':
        stop_clicking() if running else start_clicking()

def change_click_method():
    global click_method
    click_method = 'Right click' if click_method == 'Left click' else 'Left click'
    click_method_label.config(text=click_method)

def set_interval():
    global interval
    try:
        interval = float(interval_entry.get())
        interval_label.config(text=f"{interval}초")
    except ValueError:
        interval_label.config(text="유효한 숫자를 입력하세요.")

listener = keyboard.Listener(on_press=on_key_press)
listener.start()

root = tk.Tk()
root.title("AUTOCLICK by RIO")
root.geometry("350x400")
root.resizable(False, False)

tk.Label(root, text="AUTOCLICK by RIO", font=("Arial", 14, "bold")).pack(pady=10)
click_method_label = tk.Label(root, text=click_method, font=("Arial", 10))
click_method_label.pack(pady=10)

tk.Label(root, text="F1: 좌클릭, F2: 우클릭, X: 시작/종료", font=("Arial", 9)).pack()

start_button = tk.Button(root, text="시작", command=start_clicking, width=12, height=2, font=("Arial", 10))
start_button.pack(pady=5)

stop_button = tk.Button(root, text="종료", command=stop_clicking, width=12, height=2, font=("Arial", 10), state="disabled")
stop_button.pack(pady=5)

set_button = tk.Button(root, text="변경", command=change_click_method, width=12, height=2, font=("Arial", 10))
set_button.pack(pady=5)

interval_label = tk.Label(root, text=f"{interval}초", font=("Arial", 10))
interval_label.pack(pady=5)

interval_entry = tk.Entry(root, font=("Arial", 10), width=15)
interval_entry.insert(0, str(interval))
interval_entry.pack(pady=5)

tk.Button(root, text="시간 설정", command=set_interval, width=12, height=2, font=("Arial", 10)).pack(pady=5)

root.protocol("WM_DELETE_WINDOW", root.quit)
root.mainloop()