1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
import tkinter as tk
from tkinter import messagebox
import pyautogui
# Creation de la fenetre
Fenetre_Principale = tk.Tk()
Fenetre_Principale.title("Auto-Clicker")
Fenetre_Principale.geometry("200x100")
Fenetre_Principale.resizable(False, False)
# Variable global qui dit si le clique est en marche ou non
Actif = False
# Variable global pour le text du boutton de click
Action = "Démarrer"
# Initialisation des variables
Interval_h = tk.StringVar(Fenetre_Principale, value="0")
Interval_min = tk.StringVar(Fenetre_Principale, value="0")
Interval_s = tk.StringVar(Fenetre_Principale, value="1")
Interval_ms = tk.StringVar(Fenetre_Principale, value="1")
choix_click = tk.IntVar(Fenetre_Principale, value=1)
choix_position = tk.IntVar(Fenetre_Principale, value=1)
Valeur_X = tk.StringVar(Fenetre_Principale, value="100")
Valeur_Y = tk.StringVar(Fenetre_Principale, value="100")
Touche_demarrage = tk.StringVar(Fenetre_Principale, value="F6")
# Fonction qui change le text sur le bouton
def Update_Text_Button():
Bouton_Start.config(text=f"{Action} ({Touche_demarrage.get()})")
print("Texte changer")
# Fonction choix de l'action via titre boutton
def startstop():
global Actif
print("actif : ",Actif)
try :
if not Actif :
start_clicking()
elif Actif :
stop_clicking()
except Exception as e:
messagebox.showerror("Erreur", str(e))
# Fonction qui clique avec un temps de repos
def auto_click(Interval):
global Actif
global choix_click
if Actif :
try :
if int(choix_click.get()) == 1:
pyautogui.click(button="left")
print("j'ai cliqué")
Fenetre_Principale.after(Interval, lambda: auto_click(Interval))
elif int(choix_click.get()) == 2:
pyautogui.click(button="right")
Fenetre_Principale.after(Interval, lambda: auto_click(Interval))
except Exception as e:
messagebox.showerror("Erreur", str(e))
# Fonction qui clique avec un temps de repos avec positionnement du curseur
def auto_click_positionnement(Interval, x, y):
global Actif
if Actif :
try :
pyautogui.moveTo(x, y)
if int(choix_click.get()) == 1:
pyautogui.click(button="left")
Fenetre_Principale.after(Interval, lambda: auto_click_positionnement(Interval, x, y))
elif int(choix_click.get()) == 2:
pyautogui.click(button="right")
Fenetre_Principale.after(Interval, lambda: auto_click_positionnement(Interval, x, y))
except Exception as e:
messagebox.showerror("Erreur", str(e))
# Fonction pour démarrer l'auto-clicker
def start_clicking():
global Actif, Action
Actif = True
Action = "Arrêter"
Update_Text_Button()
try:
h = int(Interval_h.get()) if Interval_h.get().isdigit() else 0
m = int(Interval_min.get()) if Interval_min.get().isdigit() else 0
s = int(Interval_s.get()) if Interval_s.get().isdigit() else 0
ms = int(Interval_ms.get()) if Interval_ms.get().isdigit() else 0
Interval = h * 3600000 + m * 60000 + s * 1000 + ms
if Interval == 0:
Interval = 1000
print("interval : ",Interval)
except Exception as e:
messagebox.showerror("Erreur", str(e))
if choix_position.get() == 1:
Fenetre_Principale.after(2000, lambda: auto_click(Interval))
elif choix_position.get() == 2:
x = int(Valeur_X.get())
y = int(Valeur_Y.get())
Fenetre_Principale.after(2000, lambda: auto_click_positionnement(Interval, x, y))
# Fonction pour arrêter l'auto-clicker
def stop_clicking():
global Actif, Action
Actif = False
print("je suis dans le stop")
Action = "Démarrer"
Update_Text_Button()
# Ecouteur de touche (enlever le commentaire des 2 prochaine ligne pour avoir l'écouteur)
#import keyboard
#Id_Touche_Ecoute = keyboard.add_hotkey(Touche_demarrage.get(), startstop)
# Interface
Bouton_Start = tk.Button(Fenetre_Principale, text=f"{Action} ({Touche_demarrage.get()})", command=startstop)
Bouton_Start.pack()
# Lancement de la boucle principale Tkinter
Fenetre_Principale.mainloop() |
Partager