彩笔写的丐版python连点器,用线程替代while实现运行过程中随时终止。
但是有一个良性bug没有解决:线程没法单独终止,而是直接终止了所有线程。
源代码
import pyautogui
import time
from pynput.keyboard import Key, Listener
import threading
click = int(input("请输入点击次数:"))
m = float(input("请输入点击间隔(秒):"))
print("1.鼠标放在合适位置,按j记录坐标")
print("2.按k运行连点器")
print("3.按t可以结束程序")
x = 0
y = 0
threads=[]
positions=[]
def click_it(x,y,c,m):
for i in range(c):
pyautogui.click(x, y)
time.sleep(m)
def on_press(key):
global x, y, user_input
if hasattr(key, 'char'):
if key.char == 'j':#按j检测位置
x, y = pyautogui.position()
positions.append((x,y))#元组形式存入列表
print(f"x:{x} y:{y}")
elif key.char == 'k':#按k启动一个连点线程
global click, m
t1=threading.Thread(target=click_it,args=(*positions[-1],click,m))#*是解包的意思
threads.append(t1)
t1.start()
#先j再k,多来几次可以多线程连点
elif key.char == 't':#按t终止程序
listener.stop()
# 创建监听器对象并开始监听按键
listener = Listener(on_press=on_press)
listener.start()
# 等待用户输入t使监听器停止
while listener.is_alive():
time.sleep(1)
# 关闭监听器和用户输入线程
listener.stop()
print("程序结束")
pyinstaller打包方法
1. pip install pyinstaller
2. pip show pyautogui,如果没有模块就pip install pyautogui
3. pip show pynput,如果没有模块就pip install pynput
4. pyinstaller注意不要有-w
5. 到/dist文件下找到main.exe运行