Python實(shí)現(xiàn)按鍵精靈版的連點(diǎn)器
Python版

需要用到的庫(kù):
pip install pynput pyautoit
實(shí)現(xiàn)代碼:
import tkinter as tk
from tkinter import ttk
import time
import autoit
import threading
from tkinter import messagebox
from pynput import keyboard
import sys
# 增大迭代限制
sys.setrecursionlimit(1000000000)
class App:
def __init__(self, master):
self.master = master
master.title("簡(jiǎn)易連點(diǎn)器-小鋒學(xué)長(zhǎng)生活大爆炸(ESC鍵停止)")
# 設(shè)置連點(diǎn)的時(shí)間間隔,單位為毫秒
self.interval = 0.5
# 連點(diǎn)計(jì)數(shù)器
self.click_count = 0
self.click_total = 10
# 創(chuàng)建輸入框
self.x_label = tk.Label(master, text="X坐標(biāo):", width=15)
self.x_label.grid(row=0, column=0, padx=5, pady=10)
self.x_entry = tk.Entry(master, width=10)
self.x_entry.insert(tk.END, "100")
self.x_entry.grid(row=0, column=1, padx=5, pady=10)
self.y_label = tk.Label(master, text="Y坐標(biāo):", width=15)
self.y_label.grid(row=1, column=0, padx=5, pady=10)
self.y_entry = tk.Entry(master, width=10)
self.y_entry.insert(tk.END, "100")
self.y_entry.grid(row=1, column=1, padx=5, pady=10)
# 增加self.click_total的輸入框
self.total_label = tk.Label(master, text="點(diǎn)擊總數(shù)(0為無(wú)限):", width=15)
self.total_label.grid(row=2, column=0, padx=5, pady=10)
self.total_entry = tk.Entry(master, width=10)
self.total_entry.insert(tk.END, "10")
self.total_entry.grid(row=2, column=1, padx=5, pady=10)
# 增加self.interval的輸入框
self.interval_label = tk.Label(master, text="點(diǎn)擊間隔(ms):", width=15)
self.interval_label.grid(row=3, column=0, padx=5, pady=10)
self.interval_entry = tk.Entry(master, width=10)
self.interval_entry.insert(tk.END, "500")
self.interval_entry.grid(row=3, column=1, padx=5, pady=10)
# 創(chuàng)建進(jìn)度條和標(biāo)簽
self.progress_bar = ttk.Progressbar(master, orient="horizontal", mode="determinate")
self.progress_bar.grid(row=4, column=0, padx=5, pady=10)
self.progress_label = tk.Label(master, text="0 / {}".format(self.click_total), width=5)
self.progress_label.grid(row=4, column=1, padx=5, pady=10)
# 創(chuàng)建啟動(dòng)和停止按鈕
self.start_button = tk.Button(master, text="啟動(dòng)", command=self.start_click, width=5)
self.start_button.grid(row=5, column=0, padx=5, pady=10)
self.stop_button = tk.Button(master, text="停止", command=self.stop_click, width=5)
self.stop_button.grid(row=5, column=1, padx=5, pady=10)
# 創(chuàng)建一個(gè)標(biāo)志,表示是否按下了ESC鍵
self.esc_pressed = False
def start_click(self):
# 啟動(dòng)連點(diǎn)器
self.x = int(self.x_entry.get())
self.y = int(self.y_entry.get())
self.click_count = 0
self.running = True
self.click_total = int(self.total_entry.get()) or 1e9
self.interval = int(self.interval_entry.get()) / 1000
self.progress_bar["maximum"] = self.click_total
self.progress_bar["value"] = 0
# 創(chuàng)建一個(gè)子線程,用于監(jiān)聽(tīng)鍵盤(pán)是否按下ESC鍵
self.listener_thread = threading.Thread(target=self.listener_start)
self.listener_thread.start()
while self.running and self.click_count < self.click_total:
self.click_count += 1
# 鼠標(biāo)左鍵點(diǎn)擊
autoit.mouse_click("left", self.x, self.y)
# 等待interval毫秒
time.sleep(self.interval)
# 更新進(jìn)度條和標(biāo)簽
self.progress_bar["value"] = self.click_count
self.progress_label["text"] = "{} / {}".format(self.click_count, self.click_total)
self.master.update()
# 如果按下了ESC鍵,則停止連點(diǎn)器
if self.esc_pressed:
self.stop_click()
break
# 點(diǎn)擊結(jié)束后,停止子線程
self.listener_thread.join()
messagebox.showinfo("提示", "連點(diǎn)器已停止")
def stop_click(self):
# 停止連點(diǎn)器
self.running = False
self.esc_pressed = False
def listener_on_press(self, key):
try:
if key.char == keyboard.Key.esc:
print("ESC is pressed")
except AttributeError:
pass
def listener_on_release(self, key):
if key == keyboard.Key.esc:
return False
def listener_start(self):
# 監(jiān)聽(tīng)鍵盤(pán)是否按下ESC鍵
while self.running:
# 啟動(dòng)鍵盤(pán)監(jiān)聽(tīng)器
with keyboard.Listener(on_press=self.listener_on_press, on_release=self.listener_on_release) as listener:
listener.join()
self.esc_pressed = True
break
root = tk.Tk()
app = App(root)
# 設(shè)置窗口置頂
root.wm_attributes("-topmost", True)
root.mainloop()按鍵精靈版
實(shí)現(xiàn)代碼
/*
API指南:https://zimaoxy.com/q/categories/02-%E5%9F%BA%E6%9C%AC%E5%91%BD%E4%BB%A4/
*/
// 坐標(biāo)定義區(qū)
top_left_x = 1470 // 窗口左上角x坐標(biāo),不包括標(biāo)題欄,只需要修改這兩個(gè)
top_left_y = 43// 窗口左上角y坐標(biāo),不包括標(biāo)題欄,只需要修改這兩個(gè)
win_width = 450 // 窗口寬度
win_height = 800 // 窗口高度
// 點(diǎn)擊位置
click_x = top_left_x + win_width/2 // 1625
click_y = top_left_y + win_height/3*2 // 703
// 戰(zhàn)斗按鈕的點(diǎn)擊/找色位置
btn_fight_w = 100
btn_fight_h = 80
btn_fight_tx = top_left_x + win_width/2 - btn_fight_w/2 // 左上角
btn_fight_ty = top_left_y + win_height - btn_fight_h // 左上角
btn_fight_cx = btn_fight_tx + btn_fight_w/2 // 中心
btn_fight_cy = btn_fight_ty + btn_fight_h/2 // 中心
// 其他變量定義區(qū)
esc_key_code = 27 // ESC按鍵編號(hào)
btn_fight_active_color = "234B75"
club_msgbox_color = "12110F"
// 函數(shù)定義區(qū)
Function ClickAtFightBtn()
MoveTo btn_fight_cx, btn_fight_cy
Delay 10
LeftClick 1
End Function
Function ClickAtClicArea()
MoveTo click_x, click_y
Delay 100
LeftClick 1
Delay 100
End Function
// 移動(dòng)到戰(zhàn)斗位置
Call ClickAtFightBtn()
cnt = 0
// 開(kāi)始點(diǎn)擊
Do While 1
cnt = cnt + 1
If cnt = 10000 Then
cnt = 0
Call ClickAtFightBtn()
End If
// 判斷是否按下esc鍵導(dǎo)致終止
last_key = GetLastKey()
If last_key=esc_key_code Then
Exit Do
End If
// 判斷鼠標(biāo)是否被移動(dòng)
GetCursorPos x, y
If x <> click_x And y <> click_y Then
Call ClickAtClicArea()
End If
LeftClick 1
Delay 10
Loop
Sub OnScriptExit()
MessageBox "腳本已經(jīng)停止!"
End Sub到此這篇關(guān)于Python實(shí)現(xiàn)按鍵精靈版的連點(diǎn)器的文章就介紹到這了,更多相關(guān)Python連點(diǎn)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用python調(diào)整Excel行高和列寬的操作示例
在Excel中,默認(rèn)的行高和列寬可能不足以完全顯示某些單元格中的內(nèi)容,特別是當(dāng)內(nèi)容較長(zhǎng)時(shí),通過(guò)調(diào)整行高和列寬,可以確保所有數(shù)據(jù)都能完整顯示,避免內(nèi)容被截?cái)?本文將介紹如何通過(guò)Python調(diào)整Excel的行高列寬、或設(shè)置自適應(yīng)行高列寬,需要的朋友可以參考下2024-11-11
cython加速python代碼的方法實(shí)現(xiàn)
本文主要介紹了cython加速python代碼的方法實(shí)現(xiàn),特別是在涉及到數(shù)值計(jì)算密集型任務(wù)時(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Python datetime時(shí)間格式化去掉前導(dǎo)0
Python datetime時(shí)間格式化去掉前導(dǎo)0,在format string的%與flag之間,添加一個(gè)“-”即可2014-07-07
Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼
這篇文章主要介紹了Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼,需要的朋友可以參考下2019-05-05
python標(biāo)準(zhǔn)庫(kù)turtle海龜繪圖實(shí)現(xiàn)簡(jiǎn)單奧運(yùn)五環(huán)
這篇文章主要為大家介紹了python使用turtle實(shí)現(xiàn)最簡(jiǎn)單簡(jiǎn)單奧運(yùn)五環(huán)繪圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
一行代碼解決動(dòng)態(tài)執(zhí)行Python函數(shù)方法實(shí)例
這篇文章主要為大家介紹了如何用一行代碼解決動(dòng)態(tài)執(zhí)行Python函數(shù)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Windows安裝多個(gè)不同版本Python并切換使用的步驟
這篇文章主要介紹了如何在已安裝Python?3.11的Windows電腦上安裝并切換到Python?3.9,首先下載并安裝Python?3.9,然后通過(guò)修改系統(tǒng)環(huán)境變量的Path來(lái)優(yōu)先使用Python?3.9,需要的朋友可以參考下2024-11-11
拓?fù)渑判騊ython實(shí)現(xiàn)的過(guò)程
這篇文章主要介紹了拓?fù)渑判騊ython實(shí)現(xiàn)的過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01

