源码

文章开头先上成品(Command Line Mouse Clicker):

from pymouse import PyMouse

import time

import keyboard

tutorial = """

使用教程:

此程序开始运行后,首先,你可以输入连点间隔。

随后,程序进入连点模式,按住p,程序就会开始连点。

按下Q可以退出连点模式,并重新设置连点间隔。

需要注意的是,实际连点间隔最终取决于系统性能,可能会与设定值有一定差距。

Powered by AbsoCube

"""

print(tutorial)

mouse = PyMouse()

def GetInterval():

while True:

inter = input("输入连点间隔:")

try:

inter = float(inter)

except ValueError:

print("连点间隔需要是浮点数")

else:

print("成功设置连点间隔")

break

return inter

press = False

interval = GetInterval()

point = time.time()

def key(x):

global press, interval, point

p = keyboard.KeyboardEvent('down', 28, 'p')

q = keyboard.KeyboardEvent('down', 28, 'q')

if x.event_type == 'down' and x.name == p.name:

press = True

elif x.name == p.name:

press = False

if x.event_type == 'down' and x.name == q.name:

interval = GetInterval()

if press and time.time()-point >= interval:

mouse.click(mouse.position()[0], mouse.position()[1], 1)

point = time.time()

keyboard.hook(key)

keyboard.wait()

并且,这一连点器已经release,前往GitHub查看。

安装后,就会得到打包后的应用程序:

准备工作

此程序需要用到的两个模块——pymouse和keyboard中,keyboard安装比较简单,直接pip即可,但pymouse在pip后还需要做一些工作(否则我也不会单独拿出来说)。

首先,确保你的Python版本为3.7版本或更低(即不能使用3.8),否则,pymouse无法使用。

01 修改__ init __.py

找到pymouse的源文件,如果你不知道它在哪里,可以重新pip,系统会告诉你:

C:\Users\absoc>pip install pymouse

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple

Requirement already satisfied: pymouse in c:\users\absoc\appdata\local\programs\python\python37\lib\site-packages (1.0)

那么,你就可以在c:\users\absoc\appdata\local\programs\python\python37\lib\site-packages目录下找到pymouse文件夹,并在其中找到__ init __.py文件。

接下来,修改92行中的windows为pymouse.windows:

这里用的编辑器是notepads,录制GIF使用的是GifCam

02 安装pywin32

如果已经安装pywin32,可以跳过。安装pywin32是为了使用win32api。

03 安装pyHook

pyHook无法使用pip安装,你需要前往www.lfd.uci.edu下载pyhook的whl文件,这也是为什么不能使用3.8版本的原因——pyhook暂时没有3.8版本:

在文件名中,cp指python版本,win32或win_amd64指32位和64位,要根据系统和python版本进行选择。

这样的话,pymouse的使用就没有什么问题了。

分析源码

input的模块不多说,我们只看看这一部分:

def key(x):

global press, interval, point

p = keyboard.KeyboardEvent('down', 28, 'p')

q = keyboard.KeyboardEvent('down', 28, 'q')

if x.event_type == 'down' and x.name == p.name:

press = True

elif x.name == p.name:

press = False

if x.event_type == 'down' and x.name == q.name:

interval = GetInterval()

if press and time.time()-point >= interval:

mouse.click(mouse.position()[0], mouse.position()[1], 1)

point = time.time()

keyboard.hook(key)

keyboard.wait()

这里面:

keyboard.KeyboardEvent指键盘事件,用于和检测到的键盘事件进行匹配(第一个参数指事件类型,第二个参数指按键编号,这个无所谓,如果不知道详细的按键编号,可以随便填,第三个参数是按键名称)

x.event_type与x.name分别指检测到的键盘事件的类型(按下还是弹起)与按键名

mouse.click与mouse.position分别指模拟鼠标点击和获取鼠标位置(元组)

keyboard.hook指键盘监听,一旦有按键按下/弹起,就会触发传递的函数

keyboard.wait指等待一个指定按键按下,如果没有参数,就会不断监听这句之前的按键

其逻辑就是,按下p时,flag press设为True,松开p时,flag press设为False,按下q时,重新设置间隔时间。在flag press为True时,如果与上次点击的间隔事件超过了设定值,就再次点击。

关于打包

打包的话,首先使用pyinstaller将源码打包成可执行文件:

pyinstaller F:\Code\Mouse_Clicker\Clicker.py

当然,你也可以设定其他参数。

然后,使用Smart Install Maker将可执行文件打包成安装包,就成了你从release下载的那个样子。

效果

程序写好了,最后来看看效果:

草(一种植物)

害,我我我等下次数学课的时候,再试试吧(数学课可以点赞)。

不过,我肯定是会保证连点器可用的:

qpython做连点器脚本_「PyMouse」做个连点器给老师点赞相关推荐

  1. omnigraffle 画曲线_「技法」三步学会用绘图利器 OmniGraffle 绘制流程图

    OmniGraffle 是 Mac 上的绘图利器,曾获2002年苹果设计奖.Graffle 在很多方面对标 Windows 系统上的 Microsoft Visio,是制作各种文档的绝妙工具.这篇文章 ...

  2. 做一件事如何突破「擅长」达到「精通」

    在知乎看到的问题: 做一件事如何突破「擅长」达到「精通」? 题主发现很多事达到一定高度就很难再进步或者进步很小了,怎么样才能突破瓶颈? 我的回答: 首先,你要知道如何定义"精通": ...

  3. win10资源管理器怎么打开_让你效率倍增的电脑神器,最强资源管理器增强工具「QTTabBar」...

    前言 Windows 自带的资源管理器的功能比较简单,够用是够用了,但有时也确实无法满足我们对更便捷高效的操作方式的追求. 「QTTabBar」正是一个非常强大的 Windows 资源管理器增强工具! ...

  4. python做地图导航_「Python」利用高德地图做你想做之事

    玩grasshopper基本上都知道OpenStreetMap 这个地图网站,毕竟有一个好用的地图插件,可以在Rhino中绘制出所需,但是一个不好的地方就在于国内的数据量太少,无法满足我们的需求. 此 ...

  5. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  6. js最小化浏览器_「译」解析、抽象语法树(ast) +如何最小化解析时间的5个技巧...

    前言 该系列课程会在本周陆续更新完毕,主要讲解的都是工作中可能会遇到的真实开发中比较重要的问题以及相应的解决方法.通过本系列的课程学习,希望能对你日常的工作带来些许变化.当然,欢迎大家关注我,我将持续 ...

  7. 请求失败或服务未及时响应 有关详细信息_「干货」从零开始的微服务搭建之路...

    随着公司的业务发展,有幸经历了从单体应用迁移到分布式应用,又从分布式应用开始准备搭建微服务应用,以下是公司从零开始搭建微服务的过程,记录并分享出来,希望对大家有所帮助,我们先使用Spring Clou ...

  8. jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2

    喜欢排队吧,它能保护你的时间和精力 - 排队纪律维护员Event Loop Promise和事件循环概览图 请注意上面这张图,Promise和事件循环的那些事,将在这个图上缓缓展开. 微任务和(宏)任 ...

  9. java决策树算法_「Smile」一下,轻松用Java玩转机器学习

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI Smile,如其名,会是一个让你「笑着用」的好工具. 它的全名叫做 Statistical Machine Intelligence and ...

  10. 女生做产品经理好吗_产品经理如何做产品架构设计

    编辑导语:对于产品经理来说,发展到一定阶段后,日常的工作内容往往离不开产品架构设计.这是一个极其细致的活,需要产品经理有很强的架构能力.那么,产品经理如何才能摸清产品的底层逻辑.提升对产品的认知,做好 ...

最新文章

  1. POJ 3687 Labeling Balls【拓扑排序】
  2. [分享]运维分享一一阿里云linux系统mysql密码修改脚本
  3. 深度学习与机器学习到底什么关系?
  4. 服务器在行例维护中,8月14日服务器例行维护公告
  5. 计算机应用第1次行考0001,四川电大5110083 计算机应用基础第二次形考_0001答案
  6. Objective-C Fast Enumeration 的实现原理
  7. 剑指Offer之复杂链表的复制
  8. java servlet 3.1,Servlet 3.1规范学习小记
  9. Hanlp添加未登陆词
  10. 3.Prometheus 监控技术与实践 --- Exporter
  11. 计算机仿真期末考试,2015年数学物理建模期末考试试题.docx
  12. 情感分析入门[2]-一些数学工具
  13. Python实现Diffie-Hellman密钥交换协议
  14. VS2019 windows桌面应用_桌面美化神器RocketDock EX增强版整合超多皮肤/图标哦!
  15. 计算机课件大学,大学计算机基础应用课件
  16. python灰色预测模型步骤人口预测_人口预测模型灰色预测
  17. 无锡IATF16949认证_无锡IATF16949培训_8.3.3.1产品开发输入
  18. c++ 模糊搜索 正则表达式_c++中正则表达式(regex)
  19. Java txt文件 转 utf-8 格式
  20. 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进

热门文章

  1. SketchUp + Ruby 二次开发初识
  2. Java面试复习体系总结(2021版,持续更新)
  3. 元学习入门必备:MAML(背景+论文解读+代码分析)
  4. android扫雷代码解释,android的扫雷程序.doc
  5. 多机器人系统实验室汇总
  6. 向日葵显示不能连接服务器,手机向日葵远程连接服务器
  7. 7种常见的音频格式简析 MP3,WMA,WAV,APE,FLAC,OGG,AAC
  8. 推荐几款开发板TI AM335X NXP IMX6UL
  9. sg90舵机工作原理_舵机跑舵原因无解,锲而不舍终除隐患好文推荐!
  10. Ubutun16.04安装和使用daemontools