用户:
伴雪纷飞查看:14 回复:12 评论:14 创建时间:2021-08-12T17:41:41
整个程序的代码不会超过60行,及其简单
这其实是一个很棒(xei)的一个教程贴
众所周知,
连点器不管是在生活中还是在游戏里都扮演着很重要的角色(比如一些测手数的都能,变成数量都能变成--)
好了废话不多说
本次要用到的东西:
一台有python环境的电脑
一个可以操作电脑的人
本次要用到的库:
pynput(功能主要
time(让你的电脑不废掉
ps:pynput非python自带,请自行下载
好了开始吧
-------------------------不对称分割线------------------------------
首先导入库并创建一个名为Continuouschick(连点)类
并在里面创建一个名为Listen(监听)函数
try:
import pynput
except ImportError:
raise ImportError('请先安装pynput库!')
else:
from pynput import mouse,keyboard
from pynput.keyboard import Listener,Key
from time import sleep
kb = mouse.Controller()
abc='abcdefghigklmnopqrstuvwxyz'
class Continuouschick():
def __init__(self):
pass
if __name__ == '__main__':
Cc = Continuouschick()
那这Controller是啥呢
pynput.mouse包含用于控制和监视鼠标的类。这个就是服务于鼠标点击的拉
在初始化(__init__
里面分别加上
self.is_finish=True
self.can_do=False
self.conut=0
self.Listenfor='空格键'
self.waittime=0.01
第一个变量用来判断是否结束连点的(之后提及)
第二个变量用来判断是否暂停连点的(设计ui时有大帮助)
第三个则是已经连点多少个拉
第四个是用来判断什么键开启连点
信息解读
def read(self,_read,w)->str:
if self.can_do:
return
#print(w)
#'abcdefghigklmnopqrstuvwxyz'
if _read=='空格键':
return Key.space==w
elif _read in abc:
return "'{}'".format(_read) == str(w)
else:
raise ValueError('没有判断分支')
将传进来的参数进行解析,化为适用于pynput的
这时初始化的Listenfor就可以解读了
连续点击
def continuouschick->bool(self,key):
print(key,self.is_finish)
if self.read(self.Listenfor,key) and self.is_finish:
self.is_finish=False
print(self.is_finish)
self.Listen()
else:
self.is_finish=True
key是传进来的参数,格式为pynput的,这时候判断解读是否一致呢
一致且还是没有开始连点的状态->设置为开始连点的(self.is_finish=False)
不一致或开始了连点->设置为开始连点的(self.is_finish=True)
准备好这串代码
ta就是连点的核心
print('listen')
while not self.is_finish:
sleep(self.waittime)
kb.click(mouse.Button.left, 1)
self.conut+=1
print('一共连点{}次'.format(self.conut))
重复执行到结束状态(while not self.is_finish:)
等待一下
让后进行点击(kb.click(mouse.Button.left, 1))
里面要两个参数[鼠标键][点击次数]
监听键盘
我们再用with对键盘进行监听
大致长这样的
记得把让你准备(复制*划掉)的代码粘贴进取
def Listen(self) -> bool:
#for i in iter(int(), 1):
with keyboard.Listener(on_release=lambda key:self.continuouschick(key)) as listener:
print('listen')
while not self.is_finish:
sleep(self.waittime)
kb.click(mouse.Button.left, 1)
self.conut+=1
print('一共连点{}次'.format(self.conut))
listener.join()
大致意思就是创建一个线程时刻监听,
如果键盘按下则调用continuouschick
好了辣么就结束了,大家是不是还有一点依依不舍呢(等着复制*划掉)
为了大家的方便*划掉
这是全部代码了
可以后续可加上ui
也可以对代码进行一个优化
最后献上
哎呀,错了
try:
import pynput
except ImportError:
raise ImportError('请先安装pynput库!')
else:
from pynput import mouse,keyboard
from pynput.keyboard import Listener,Key
from time import sleep
kb = mouse.Controller()
abc='abcdefghigklmnopqrstuvwxyz'
class Continuouschick():
def __init__(self):
super().__init__()
self.is_finish=True
self.can_do=False
self.conut=0
self.Listenfor='空格键'
self.waittime=0.01
def Listen(self) -> bool:
#for i in iter(int(), 1):
with keyboard.Listener(on_release=lambda key:self.continuouschick(key)) as listener:
print('listen')
while not self.is_finish:
sleep(self.waittime)
kb.click(mouse.Button.left, 1)
self.conut+=1
print('一共连点{}次'.format(self.conut))
listener.join()
...
def read(self,_read,w)->str:
if self.can_do:
return
#print(w)
#'abcdefghigklmnopqrstuvwxyz'
if _read=='空格键':
return Key.space==w
elif _read in abc:
return "'{}'".format(_read) == str(w)
else:
raise ValueError('没有判断分支')
def continuouschick->bool(self,key):
print(key,self.is_finish)
if self.read(self.Listenfor,key) and self.is_finish:
self.is_finish=False
print(self.is_finish)
self.Listen()
else:
self.is_finish=True
if __name__ == '__main__':
Cc = Continuouschick()
Cc.can_do=True
Cc.Listen()
ps:可能会有几处字打错的情况请及时反馈
ps:还有,别拿去搞非法的哈
ps:index out of range(咦,还有一个ps呢?)
学会了吗(复制了吗?*划掉)
伴雪纷飞还有一点bug,这是修改版
try:
import pynput
except ImportError:
raise ImportError('请先安装pynput库!')
else:
from pynput import mouse,keyboard
from pynput.keyboard import Listener,Key
from time import sleep
kb = mouse.Controller()
abc='abcdefghigklmnopqrstuvwxyz'
class Continuouschick():
def __init__(self):
super().__init__()
self.is_finish=True
self.can_do=False
self.conut=0
self.Listenfor='空格键'
self.waittime=0.01
def Listen(self) -> bool:
#for i in iter(int(), 1):
with keyboard.Listener(on_release=lambda key:self.continuouschick(key)) as listener:
print('listen')
while not self.is_finish:
sleep(self.waittime)
kb.click(mouse.Button.left, 1)
self.conut+=1
print('一共连点{}次'.format(self.conut))
listener.join()
...
def read(self,_read,w):
if self.can_do:
#print(w)
#'abcdefghigklmnopqrstuvwxyz'
if _read=='空格键':
return Key.space==w
elif _read in abc:
return "'{}'".format(_read) == str(w)
else:
raise ValueError('没有判断分支')
def continuouschick(self,key):
print(key,self.is_finish)
if self.read(self.Listenfor,key) and self.is_finish:
self.is_finish=False
print(self.is_finish)
self.Listen()
else:
self.is_finish=True
if __name__ == '__main__':
Cc = Continuouschick()
Cc.can_do=True
Cc.Listen()
点赞2
评论