카테고리 없음
AUTOCLICK 구현
ris
2025. 3. 3. 17:51
게임을 하다가 오토 클릭이 필요해서 만들어봤습니다.
하다가 비동기적 처리도 배우고 꽤 재밌었습니다.
파일도 첨부합니다. 수정 사항 원하시면 가끔 수정하겠습니다.
파일 압축 푼 후에 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()