猫史档案馆


python连点器制作教程

用户:伴雪纷飞伴雪纷飞查看:578 回复: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

也可以对代码进行一个优化

最后献上center_image

哎呀,错了

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呢?)

学会了吗(复制了吗?*划掉)


回复

上一页第 1 页 / 共 1 页下一页
伴雪纷飞伴雪纷飞

自古沙发归作者

点赞4


评论

对了如果觉得太慢了,把waittime改小就可以了


深沉LSZ深沉LSZ

25和47

点赞1


评论

?是会报错吗

嗯嗯

对不起哈,帖子发布时重构了一下代码,重构后的代码有没运行,↑是修改版


伴雪纷飞伴雪纷飞

还有一点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


评论

点击空格开始连点,再次点击停止


伴雪纷飞伴雪纷飞

d‪d‪

点赞0


评论


编码已破译编码已破译

哇,Python大佬

点赞0


评论

斯,az


立白uzP4立白uzP4

我就问一句,你加那个try函数有什么意义呢?

点赞0


评论

class有啥意义呢?

用于定义类型啊

意义

额,不知道

管理代码,那try也是一样的感觉比py自带的报错更容易看懂

哦,是吗?他们的意义好像不同吧?

意义不同,但是一样的感觉

哦,懂了,谢大佬指点


立白uzP4立白uzP4

会报错?

点赞0


评论


立白uzP4立白uzP4

应该没错才对呀

点赞0


评论


AlcalaAlcala

nb

点赞1


评论


wwwloadwwwload

哎,错了错了,不是可以操控电脑的人,是一个人

点赞0


评论


Albert钟Albert钟

针不戳

点赞1


评论


Python-happyyyyPython-happyyyy

?Java的robot不好吗

点赞0


评论